缘去缘来2022 2022-07-04 10:45 采纳率: 33.3%
浏览 499
已结题

Android通过NDK使用jni库,报错cannot locate symbol "__aarch64_ldadd4_relax",如何解决?(语言-c语言|操作系统-android)

问题遇到的现象和发生背景

Android版本:R
abi:arm64-v8a
芯片:高通8155
报错库:自己在ubuntu中交叉编译zeromq得到的Android库
android交叉编译工具链:android-ndk-r24
问题描述:在APK中java侧通过System.loadLibrary加载so,但是在运行时报了错误,
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__aarch64_ldadd4_relax" referenced by "/data/app/~~7M30PxbA5TZn2HmzOnoe1w==/com.test.example-x0DRbnJHKw-KSA9-1Mk9rg==/base.apk!/lib/arm64-v8a/libzmq.so"...

问题相关代码

交叉编译指令:
export ANDROID_NDK_ROOT=~/toolchain/android-ndk-r24
export MIN_SDK_VERSION=28
./build.sh arm64

dev05@hello-PowerEdge-R740:~//libzmq$ find ./ -name *.so | xargs nm -D | grep ldadd
U __aarch64_ldadd4_acq
U __aarch64_ldadd4_acq_rel
U __aarch64_ldadd4_rel
U __aarch64_ldadd4_relax
U __aarch64_ldadd8_acq_rel
U __aarch64_ldadd8_relax
U __aarch64_ldadd4_acq
U __aarch64_ldadd4_acq_rel
U __aarch64_ldadd4_rel
U __aarch64_ldadd4_relax
U __aarch64_ldadd8_acq_rel
U __aarch64_ldadd8_relax

运行结果及报错内容

java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__aarch64_ldadd4_relax" referenced by "/data/app/~~7M30PxbA5TZn2HmzOnoe1w==/com.test.example-x0DRbnJHKw-KSA9-1Mk9rg==/base.apk!/lib/arm64-v8a/libzmq.so"...
编译没有问题,apk在运行时,dlopen ndk的so,报错找不到__aarch64_ldadd4_relax

我的解答思路和尝试过的方法

之前在网上查找说,默认开启了-moutline-atomics,但是我使用的交叉编译命令是zeromq自带的,没有去修改CMakeLists.txt。。

另外网上说__aarch64_ldadd4_acq_rel在libgcc.a中,我将libgcc.a依赖进入到jni lib中,运行仍然报上面的错误。

我想要达到的结果

1、上述问题产生的原因
2、能够在Android中运行zeromq。

  • 写回答

6条回答 默认 最新

  • 不会写代码的猴子 Android领域优质创作者 2022-07-04 14:08
    关注

    上层调用动态库,一般要加jni接口,然后用System.loadLibrary("库")的方式来调用
    你说的 在APK中通过dlopen访问NDK侧的libzmq库 我不太明白

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 7月13日
  • 已采纳回答 7月5日
  • 修改了问题 7月4日
  • 赞助了问题酬金70元 7月4日
  • 展开全部

悬赏问题

  • ¥15 机器学习教材中的例题询问
  • ¥15 求.net core 几款免费的pdf编辑器
  • ¥20 SQL server表计算问题
  • ¥15 C# P/Invoke的效率问题
  • ¥20 thinkphp适配人大金仓问题
  • ¥20 Oracle替换.dbf文件后无法连接,如何解决?(相关搜索:数据库|死循环)
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传