红联Linux门户
Linux帮助

ubuntu16.04交叉编译Poco1.7.8 for arm

发布时间:2017-05-17 10:39:51来源:linux网站作者:wojiushiwoba
环境:ubuntu16.04 x64,arm-linux-gcc(Sourcery G++ Lite 2010.09-50) 4.5.1
 
首先,做编译前准备,编译安装OPENSSL,STLport等包,为编译Poco准备依赖包(由于我不使用MySQL和ODBC,所以没有交叉编译安装,需要的可以自行交叉编译安装)。
 
1.OPENSSL的交叉编译安装(以1.0.0e为准)
源码下载地址:https://www.openssl.org/source/openssl-1.0.0e.tar.gz
下载后按如下指令进行编译安装:
tar -xvf openssl-1.0.0e.tar.gz
cd openssl-1.0.0e
./config CC=arm-none-linux-gnueabi-gcc --prefix=/opt/arm-cross-tools/openssl
make
make install
安装完成后把/opt/arm-cross-tools/openssl/lib所有文件超链接到交叉编译器的arm-linux-gcc/arm-none-linux-gnueabi/lib下,/opt/arm-cross-tools/openssl/include/openssl目录超链接到arm-linux-gcc/arm-none-linux-gnueabi/include下,超连接名字为openssl。(超链接之后,交叉编译Poco时就无需再修改源码配置openssl路径了)
 
2.编译STLport
源码下载地址:https://nchc.dl.sourceforge.net/project/stlport/STLport/STLport-5.2.1/STLport-5.2.1.tar.bz2
下载后按如下指令进行编译安装:
tar -xvf STLport-5.2.1.tar.bz2
修改文件:STLport-5.2.1/stlport/stl/_cstdlib.h,
94行由#      if !defined(__sun)替换为
#      if !defined(__sun) && !defined (__arm__) && !defined (__sh__)
150行由#    if !defined (__sun)替换为
#    if !defined (__sun) && !defined (__arm__) && !defined (__mips__) && !defined (__mipset__) && !defined (__sh__)
cd STLport-5.2.1
./configure --target=arm-linux --prefix=/opt/arm-cross-tools/STLport
make
make install
cd /opt/arm-cross-tools/STLport/arm-linux-lib
ln -s -f libstlport.so libstlport_arm-linux-gcc.so 
安装完成后把/opt/arm-cross-tools/STLport/lib所有文件超链接到交叉编译器的arm-linux-gcc/arm-none-linux-gnueabi/lib下,/opt/arm-cross-tools/STLport/include/stlport目录超链接到arm-linux-gcc/arm-none-linux-gnueabi/include下,超连接名字为stlport。(超链接之后,交叉编译Poco时就无需再修改源码配置stlport路径了)
然后,做Poco编译安装。
 
3.编译安装Poco
源码下载地址:https://pocoproject.org/releases/poco-1.7.8/poco-1.7.8-all.tar.gz
tar -xzvf poco-1.7.8-all.tar.gz
cd poco-1.7.8-all
./configure --config=ARM-Linux --no-tests --no-samples --omit=Data/ODBC,Data/MySQL --prefix=/opt/arm-cross-tools/Poco --static --shared
make
make install
到此Poco就交叉编译安装完成了。
 
需要注意的是:arm-linux-gcc(Sourcery G++ Lite 2010.09-50) 4.5.2编译时,在编译XML的xmltok.c时无法通过。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/30845.html