Linux下第三方库交叉编译

Linux下第三方库交叉编译

最后更新日期:2010-9-11

作者:Kagula

环境:Ubuntu8.04.1 + arm-linux-gcc-4.3.2

本文主要内容:ZlibOpenSSLOpenSSHCTorrent交叉编译。

Zlib交叉编译

#zlib版本1.2.5

#./configure  --shared

#make LDSHARED="arm-linux-gcc -shared -Wl,-soname,libz.so.1" CC_FOR_BUILD="arm-linux-gcc" CC="arm-linux-gcc" LD="arm-linux-ld" CPP="arm-linux-g++ -E" AR="arm-linux-ar rc" prefix="/usr/local/arm/4.3.2"    CFLAGS="-fPIC" libz.so.1.2.5 libz.a

#拷贝zconf.h zlib.h/home/kagula/arm432/include/

#拷贝 libz* /home/kagula/arm432/lib/

#原文http://blog.csdn.net/x uxinshao/archive/2008/01/24/2063876.aspx

备注:应该把上面prefix参数的值改一下,后来手动安装就算了。

OpenSSL交叉编译

#openssl版本0.9.8o

方式一:生成静态库

# ./config --prefix=/home/kagula/arm432  no-asm shared  os/compiler:arm-linux-gcc

修改MakeFile文件中的以下变量

EX_LIBS= -ldl

AR= arm-linux-ar $(ARFLAGS) r

ARD=arm-linux-ar $(ARFLAGS) d

RANLIB= arm-linux-ranlib

#Make

#Make install

生成libssl.a   libcrytpo.a (这两个库的使用顺序不能颠倒)

备注:【1】使用os/compiler选项会导致shared参数不起作用,即只能生成静态库【2】如果刚编译成x86版本的,编译成arm版本之前记得要make clean下清除掉x86版本的目标文件。

方式二:生成动态库

#CC=arm-linux-gcc ./config no-asm shared --prefix=/home/kagula/arm432

如上修改MakeFile文件中的变量

#Make

#Make install

在安装目录就会看到libssl.solibcrypto.so相关文件

 

OpenSSH交叉编译

#openSSH版本4.7.p1

#./configure       --host=arm-linux   --with-libs --with-zlib=/home/kagula/arm432 --with-ssl-dir=/home/kagula/arm432 --disable-etc-default-login CC=arm-linux-gcc LD=arm-linux-ld AR=arm-linux-ar  --prefix=/home/kagula/arm432

#make

#make install会出现strip出错,参考“参考资料[1]”完成OpenSSH的安装,建议使用make install –i命令

备注:

[1]若你开发机OS中的Vmware上的GuestOS网卡必须改为“Bridge”,否则Arm板无法访问你开发机中的VMware中的GuestOS

[2]arm9板使用kagula帐号远程连接SSH服务器(192.168.0.171)

#./ssh –l kagula 192.168.0.171

[3]装在arm432目录下的OpenSSH得使用Chmod命令使之可执行,然后参考“参考资料[2]”让OpenSSH服务跑起来。期间可能要求你新增一个SSH帐号,使用adduser命令即可。

CTorrent交叉编译

#CTorrent版本dnh3.3.2

#CC=arm-linux-gcc CXX=arm-linux-g++ ./configure --host=arm-linux  --prefix=/home/kagula/arm432 --with-ssl=/home/kagula/arm432

#make

#make install

CTorrent使用

[1]/home/kagula/arm432目录打成包

#tar –zcvf arm432.gz arm432

[2]arm432.gz下到arm9开发板

#ftp 192.168.0.101

ftp>binary

ftp>put arm432.gz

bye

[3]在开发板/home/kagula目录下解压arm432.gz

#tar –zxvf arm432.gz

[4]修改arm9板上的/etc/profile文件

PATH=/home/kagula/arm432/bin:$PATH

LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/home/kagula/arm432/lib

EXPORT LD_LIBRARY_PATH

[5]重启开发板后就可以在任意目录下运行ctorrent

参考资料

[1]Openssh移植经验谈》

http://blog.csdn.net/dzassn/archive/2007/09/08/1776971.aspx

[2]《解决启动SSHD服务时报错》

http://firesk.blog.51cto.com/180373/46625

 

 

你可能感兴趣的:(C++)