Linux下第三方库交叉编译
最后更新日期:2010-9-11
作者:Kagula
环境:Ubuntu8.04.1 + arm-linux-gcc-4.3.2
本文主要内容:Zlib、OpenSSL、OpenSSH、CTorrent交叉编译。
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.so及libcrypto.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
分享到:
相关推荐
python库和其第三方库,在嵌入式linux操作系统上交叉编译的步骤
本资源包含编译OpenCV是可能需要的一些第三方库,和交叉编译工具arm-linux-gcc4.4.3,有需要的朋友可以下载。
一、编译环境及库文件 linux环境:ubuntu12.04 交叉编译:4.3.2 arm板子:iTOP4412开发板 libz: libjpeg: libpng: libyasm: opencv: libx264: libxvid: lffmpeg: cmake:
Net-SNMP动态库方式扩展MIB,Hello SNMP扩展示例,仅供参考,做相关开发的可以自行动态扩展
除了 tinker 库没有交叉编译之外,其余用到的库全部通过交叉编译实现。 包括 openssl,zlib,pip 等 交叉编译器:arm-linux-gnueabihf-gcc cpu 支持 armv7l,32 位 如果需要第三方的库的交叉编译需求,可私信
为系统构建Python之后,您可能会发现自己需要包含许多第三方库。 纯Python库通常只能工作,但是许多流行的库都依赖于已编译的C代码,这在构建时可能具有挑战性。 该软件包是用于交叉编译扩展模块的工具。 它创建了...
《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...
OpenCV 3.2.0 移植到ARM所需要的第三方库包,OpenCV交叉编译工具链。包括(zlib-1.2.8.tar.gz、yasm-1.3.0.tar.gz、xvidcore_1.3.3.orig.tar.gz、libpng-1.6.32.tar.xz、last_x264.tar.bz2、jpegsrc.v9b.tar.gz、...
对于3d点云来说,pcl完全。是一个模块化的现代C++模板库。 基于以下第三方库:boost、flann、vtk、qhull等实现点云相关的获取、滤波、配准、检索、特征提取、识别、追踪、可视化等。
最后,建立硬件环境和交叉编译环境,在 Linux 环境下,编译代码生成可执 行文件,由交叉编译器在基于 GPRS 模组的 ARM9 开发板上运行可执行程序,通过 触摸板上面的虚拟按键进行功能的检测,根据检测的结果优化程序...
vlc-1.0.2 linux-windows交叉编译的预编译的第三方contrib库依赖
我们的目标是将第三方的依赖性降到最低,目前仅要求桌面使用JOGL和JSON。 Android提供OpenGL和JSON作为其平台的一部分。 需要Java 8和Gradle。 每个受支持的平台都有自己的构建脚本,这些脚本位于其根目录下的目录...
GNU交叉编译1.初始化docker基本镜像$ docker buildx build --platform linux/amd64,linux/386,linux/arm64,linux/arm/v7,linux/arm/v6 -t kayuii/gcc:base -f ./Dockerfile ....第三方镜像。 163 mirrors.163
eclipse工程,从linux(ubuntu)到windows的迁移。近日,由于工作需要,需要将之前写的一个java工程转移到linux下运行。说明网址:http://blog.csdn.net/sayigood/archive/2010/04/14/5485222.aspx
Qt虚拟虚拟键盘修改了源码,实现中引文切换,大小修改
是本人向ARM Linux上通过交叉编译的方式移植PYTHON ,以及PYTHON第三方库numpy的工作记录。踩了好多坑后,按照这个方法移植后的numpy可以在arm上正常工作。 文件是markdown格式的。如有问题欢迎交流。
S级C ++中的类,用于构建跨平台应用程序。 有关示例用法,请参见 。 它使用“ smake”作为构建系统。 smake可以如下编译: 在Linux(x64)中cd build/Linux_x64make smake在Windows...第三方它是ThirdParty库源/头文件
尽管此二进制文件将在设备上运行,但是您将需要第三方应用程序才能实际看到程序的输出(如 )。 第二个选项是将程序包装到RunCLI ——它将模拟终端输出并将其写入设备显示器。 准备 - 构建 Docker 镜像 为了您的...
本书是在我参与了多年的软件开发项目之后写的,这些项目由于各种各样的原因需要反复地对第三方代码进行逆向工程。起初,我觉得这是一个非常单调乏味的过程,只是在没有替代方法来获取信息的情况下才不得已使用它。...