hewumars
10/16/2019 - 8:38 AM

常见库交叉编译

1.Euler_compile_env_cross环境下不要执行source /etc/profile,否者有些库编译不过,应该是环境变量的问题

wget https://sourceforge.net/projects/boost/files/boost/1.62.0/boost_1_62_0.tar.gz
tar xvzf boost_1_62_0.tar.gz
cd boost_1_62_0
./bootstrap.sh --show-libraries
#使用 --without-libraries=, , , 逗号隔开去掉不想编译的库,--prefix=/../ 指定编译后的安装路径
./bootstrap.sh --without-libraries=regex --prefix=/usr/local/boost-1.62.0
# 生成有 b2 和 bjam ,以及一个 project-config.jam 的文件,修改该文件的一行(指定自己的编译器):注意4个空格
# using gcc : aarch64 : /arm/cross_compile/install/bin/aarch64-linux-gnu-gcc ;

./bjam
./b2
./b2 install
wget https://www.openssl.org/source/old/1.1.0/openssl-1.1.0.tar.gz
tar xvzf openssl-1.1.0.tar.gz
cd openssl-1.1.0
./config no-asm no-afalgeng shared --cross-compile-prefix=/arm/cross_compile/install/bin/aarch64-linux-gnu- --prefix=/usr/local/ssl-1.0.2j/
sed -i "s/-m64//g" Makefile
make -j24 && make install
wget https://curl.haxx.se/download/curl-7.57.0.tar.gz
tar xvzf curl-7.57.0.tar.gz
cd curl-7.57.0
CPPFLAGS="-I/usr/local/ssl-1.1.0/ -I/usr/local/ssl-1.1.0/include" LDFLAGS="-L/usr/local/ssl-1.1.0/lib" LIBS="-ldl"
./configure --host=aarch64-linux CC=/arm/cross_compile/install/bin/aarch64-linux-gnu-gcc CXX=/arm/cross_compile/install/bin/aarch64-linux-gnu-g++ --with-ssl --with-ssl=/usr/local/ssl-1.1.0 --enable-shared --enable-static --disable-dict --disable-ftp --disable-imap --disable-ldap --disable-ldaps --disable-pop3 --disable-proxy --disable-rtsp --disable-smtp --disable-telnet --disable-tftp --disable-zlib --without-ca-bundle --without-gnutls --without-libidn --without-librtmp --without-libssh2 --without-nss --without-zlib --prefix=/usr/local/curl
make -j24 && make install
#一定要加fPIC编译位置无关库,否则其他动态库无法链接
./configure --host=aarch64 CC=/arm/cross_compile/install/bin/aarch64-linux-gnu-gcc CXX=/arm/cross_compile/install/bin/aarch64-linux-gnu-g++ CFLAGS="-fPIC"  CXXFLAGS="-fPIC" --disable-protoc --prefix=/usr/local/protobuf-3.7.1
make
make install
./configure --prefix=/usr/local/ffmpeg/ --enable-shared --enable-gpl --cross-prefix=/arm/cross_compile/install/bin/aarch64-linux-gnu- --enable-cross-compile --arch=aarch64 --target-os=linux --disable-yasm --enable-pthreads
make clean -w  #解决Relocations in generic ELF问题
make -j24
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar zxvf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure –prefix=/usr/local
make
make install
ln -s /usr/local/lib/libiconv.so /usr/lib
ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2