cmake Linux报错skipping incompatible的解决

在进行arm8交叉编译的时候,发现在link时报错:

/usr/bin/ld: skipping incompatible libxxx

这个问题可能有多个原因,解决排查顺序:

1.因为是交叉编译,所以这里的连接器/usr/bin/ld是X86下的,显然不对。

2.检查cmakelists.txt文件里有没有重新设定 CMAKE_LINKER到交叉编译工具对应的ld 文件的路径

3.若CMAKE_LINKER已经设定正确,须检查COMPILER的路径是否设置正确。比如CMAKE_CXX_COMPILER 和 CMAKE_C_COMPILER

我这里遇到的原因是 路径设置多了空格:(红色部分)

SET(CMAKE_C_COMPILER " /home/xxx/host/bin/aarch64-buildroot-linux-gnu-gcc.br_real")

这样导致系统使用了默认的compiler/usr/bin/gcc, 将空格去掉,则可以使用到正确的compiler和linker去编译,错误消失。

另外,如何确定编译某个模块具体用的啥命令呢?可以到build目录下模块的目录下查找link.txt文件,里面记录了具体的最终编译链接命令。

相关推荐
Edward111111111 分钟前
TS安装
linux·运维·服务器
ZzzZZzzzZZZzzzz…1 分钟前
Docker 数据持久化:4种挂载方式 + 备份还原实战
linux·运维·docker·云原生·容器·数据持久化
弹简特2 分钟前
【Linux命令饲养指南】03-Linux文件操作与编辑:从“摸鱼”到“搬砖”,这篇让你把文件玩出花
linux
LSG_Dawn7 分钟前
linux 开机黑屏,/dev/nvme1n1p4:clean, xxxxx/xxxxxxx files, xxxx/xxxx blocks
linux·运维·服务器
2401_873479407 分钟前
金融风控中IP地址查询如何识别异常登录?IP离线库提升欺诈拦截准确率的完整指南
服务器·网络·php
蜜獾云8 分钟前
Nginx-包教包会-入门
运维·nginx
喜欢吃燃面8 分钟前
Linux 进程间通信:命名管道与 System V 共享内存深度解析
linux·运维·服务器·学习
有谁看见我的剑了?13 分钟前
关于linux namespace学习
linux·运维·docker
顾喵16 分钟前
ARM处理器体系结构
linux·arm
特长腿特长18 分钟前
systemd 服务配置文件,xxx.service 编辑指南,自定义我们自己的服务。
linux·网络·云原生