1、提示错误如下:

2、网上各种查原因:

有的说是用ndk r21d可以编译过去

有的是ffmpeg移植遇到这种问题,设置api level为21可以过去,或者configure的时候加上--disable-asm可以过去

3、为此,我将ndk 18到21都下载了,分别做成交叉编译链,结果测试还是不行

4、这个问题卡了我三天,最后,只能用笨方法了

5、我们是android程序编译的时候假如了libxxxa.so,编译libxxxa.so需要关联libxxxb.so,libxxxb.so是同事提供的

6、首先aarch64-linux-android-nm -D libxxxa.so找到里面有fgets_unlocked,然后我就找编译链里面的libc.so,看里面是否有fgets_unlocked,结果发现platform小于等于27的libc.so里面没有这个函数,大于27的libc.so里面有

7、将车机上的libc.so拿下来,用arch64-linux-android-nm查看同样没有fgets_unlocked,所以可以确定,libxxxa.so用错编译链了

8、用aarch64-linux-android-nm查libxxxb.so,里面也有fgets_unlocked,让同事把用到fgets的地方全部关闭,再重新编译libxxxb.so和libxxxa.so,测试发现没有问题了。

9、最后同事发现他环境变量设错了,卧槽

 

写这个算是提供一种思路吧,哈哈。。。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐