交叉编译就是在源代码所在的机器上编译生成其他机器可以运行的代码一般是arm。
环境x86_64 编译arm32位程序
安装编译工具
sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
安装完成之后使用 arm-linux-gnueabihf-g++ 编译源码文件 如果编译提示lpthread 或者lpcap 的库文件找不到,需要查找arm-linux-gnueabihf对应的lib,然后添加对应的lib路径 (-Lpath),我的路径是/usr/lib/arm-linux-gnueabihf/
所以要编译命令为
arm-linux-gnueabihf-g++ main.c -L/usr/lib/arm-linux-gnueabihf/ -lpthread
如果需要打包 对应的链接库 使用
arm-linux-gnueabi-readelf -d a.out 查看依赖的库
不可以使用ldd 因为编译生成的可执行文件是在其他硬件架构下的,本机对应的ldd 不起作用
然后复制arm-linux-gnueabihf 对应目录下的库文件