最好是通过 cmake 命令行来设置,要不然你只有在 CMakeFiles.txt 里面自己写判断语句了。
要用 cmake 交叉编译,必须设置连接器,要不然会使用当前系统的 ld,就是 /usr/bin/ld。
但是其它平台是不会ld上的,elf格式都不一样,所以需要手动指定交叉编译的 ld 工具。
别看某些人乱整文,交叉编译不配连接器,这不是扯淡呢,虽然能编走,但是链接不上等于0。
另外:
路径可以写全路径,但是一般不需要,因为正确安装的交叉编译器都在 /usr/bin、/usr/sbin 之中有软连接,你直接写交叉编译工具链的名字就可以了。
1、ARMv7L编译
cmake .. -DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc
-DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++
-DCMAKE_LINKER=arm-linux-gnueabihf-ld
2、S390X编译(IBM大型机)
cmake .. -DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER=s390x-linux-gnu-gcc
-DCMAKE_CXX_COMPILER=s390x-linux-gnu-g++
-DCMAKE_LINKER=s390x-linux-gnu-ld
3、AARCH64编译(ARMv64)
cmake .. -DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc
-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++
-DCMAKE_LINKER=aarch64-linux-gnu-ld
安装交叉编译器:
apt-get install gcc-aarch64-linux-gnu -y
apt-get install g++-aarch64-linux-gnu binutils-aarch64-linux-gnu -y
4、MIPS64编译
大端
cmake .. -DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER=mips64-linux-gnuabi64-gcc
-DCMAKE_CXX_COMPILER=mips64-linux-gnuabi64-g++
-DCMAKE_LINKER=mips64-linux-gnuabi64-ld
安装交叉编译器:
sudo apt install gcc-mips64-linux-gnuabi64 -y
sudo apt install build-essential g++-mips64-linux-gnuabi64 -y
MIPS64-EL(小端)
cmake .. -DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER=mips64el-linux-gnuabi64-gcc
-DCMAKE_CXX_COMPILER=mips64el-linux-gnuabi64-g++
-DCMAKE_LINKER=mips64el-linux-gnuabi64-ld
安装交叉编译器:
sudo apt install gcc-mips64el-linux-gnuabi64 binutils-mips64el-linux-gnuabi64 -y
sudo apt install g++-mips64el-linux-gnuabi64 -y
sudo apt install gdb-multiarch-mips64el-linux-gnuabi64 -y
补充:
可以在 CMakeFiles.txt 之中,手动写工具链的信息,但是我不建议,真心的,跨平台交叉编译,真心不推荐,除非你是真的没办法,但这种也应该写对应平台的编译 patch(补丁)。
原文地址:https://blog.csdn.net/liulilittle/article/details/135873357
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_62827.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!