Tina编译报错:/usr/bin/ld: skipping incompatible解决方案

在项目编译过程中遇到/usr/bin/ld报错,提示找不到libgstaudio-1.0.so共享库。问题根源是主程序与链接库的编译环境不一致,具体为arm环境的库在非arm环境下使用。通过查看文件信息和makefile,发现编译工具链配置错误。修正工具链配置后,重新编译解决了问题。确保编译环境一致是避免此类问题的关键。
摘要由CSDN通过智能技术生成

今天在做项目的时候,用make命令后出现了/usr/bin/ld: skipping incompatible…问题。
在这里插入图片描述
分析:编译器给出的错误信息已经很清楚了:兼容性问题,即产生了不兼容性且找不到libgstaudio-1.0.so共享库,可是libgstaudio-1.0.so在指定的路径下明明是存在的呢。

错误原因排查:

经过排查发现,我链接的共享库是在arm环境下编译产生的,而主程序却是在非arm环境的(此处错误),因此产生了不兼容性。

这个问题实质是链接库文件时,库文件版本与平台版本不对应的问题。

解决方法:objdump -p ibgstaudio-1.0.so 或者 file ***.o 查看文件信息
在这里插入图片描述
在这里插入图片描述

看一下该库的版本是32位还是64位的,或是ARM版还是..等等。 仔细分析一下,发现我在编译gst

### 回答1: Q: '/usr/bin/ld: skipping incompatible' 是什么意思? A: 这是一个编译器错误,意味着编译器在链接时跳过了不兼容的目标文件。可能是因为目标文件是用不兼容的编译器或库编译的,需要使用兼容的编译器或库重新编译目标文件。 ### 回答2: 在使用编译编译代码时,有时会遇到提示“/usr/bin/ld: skipping incompatible”这个错误。这是因为编译器在链接库时发现部分库文件有兼容性问题,无法与当前系统兼容,从而导致编译失败。 出现这个问题的原因是编译器无法找到适配当前系统的库文件,这可能是由于库文件版本过旧或者过新所导致的。在解决这个问题时,我们需要寻找与当前系统相适配的库文件来进行链接。 首先,我们需要确定当前系统的操作系统版本、CPU架构类型等信息。然后,我们可以在官方的库文件仓库或者第三方库文件仓库中搜索与当前系统版本和CPU架构类型相适配的库文件,选择适配的库文件进行下载。 下载完成后,我们可以手动将库文件放置到对应的系统路径下,或者使用软件包管理器来进行安装。在成功安装了适配的库文件后,我们再次进行编译时就可以避免出现“/usr/bin/ld: skipping incompatible”这个错误了。 总之,在遇到这种错误时,我们需要先了解当前系统的相关信息,然后寻找并安装适配的库文件来解决问题。这样才能保证编译过程的正常进行和代码的正确性。 ### 回答3: 当我们在编译程序的时候,有时候会出现类似于“/usr/bin/ld: skipping incompatible”的错误信息,这个错误信息通常是指一个链接器在尝试将一个非本机架构的对象文件连接到当前的主机架构时发生的错误。 这种错误通常会出现在编译跨平台的程序时,例如我们的程序在本地开发环境是 x86 架构,但是我们在编译时需要将程序打包成 Android 的 apk 文件,这时就需要使用 Android 系统对应的 NDK 来编译。如果我们的本机环境与目标架构不一致时,就会出现这个错误。 正确的处理方法是,确定自己的开发环境和目标架构是否一致,如果不一致,需要重新选择开发环境和相应的编译器;如果开发环境和目标架构一致,可以考虑重新编译源代码或者寻找适合当前架构的已编译库文件。 总之,在编译过程中出现“/usr/bin/ld: skipping incompatible”的错误说明编译器不能识别当前的目标架构,需要对开发环境和编译器进行检查,并找到适合当前架构的编译器和库文件进行编译,才能解决这个问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值