首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android NDK:无归档符号表(运行ranlib)

Android NDK:无归档符号表(运行ranlib)
EN

Stack Overflow用户
提问于 2018-09-19 11:05:48
回答 3查看 2.7K关注 0票数 7

我正在更新我的项目以使用Android ndk 16b,它之前使用的是12b (工作正常)。更新后,我在构建最终的.so时遇到了以下错误:

代码语言:javascript
运行
复制
/Users/ssk/code/client/git/thirdparty/android-ndk-r16b/android-ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: jni/../../../shared-library/SharedCommon/build/arm-linux-androideabi/lib/libSharedCommon.a: no archive symbol table (run ranlib)

这导致了一堆链接器错误。我尝试了以下答案:

Android NDK: no archive symbol table

How to run ranlib on an archive built through Android.mk?

no archive symbol table (run ranlib) while building libcryptopp.a through ndk-build

不走运。

EN

回答 3

Stack Overflow用户

发布于 2018-09-20 11:45:12

您需要使用GNU AR构建静态库(就像我们在NDK中包含的那样,与GCC位于同一目录)。Darwin的AR是不会自动执行ranlib任务的BSD AR。

票数 6
EN

Stack Overflow用户

发布于 2019-07-08 19:50:58

在交叉编译android库时,我遇到了类似的问题。

出现这个问题是因为我没有指定用于交叉编译的ranlib工具,并且它在构建系统中使用了默认的x86工具。

通过在编译前的配置阶段将ranlib指定为arm-linux-androideabi-ranlib,解决了此问题。

票数 0
EN

Stack Overflow用户

发布于 2021-02-02 22:25:20

对于我的一个库添加

代码语言:javascript
运行
复制
NDK=$HOME/ndk/21.3.6528147/toolchains/llvm/prebuilt/darwin-x86_64/bin/
cmake -DCMAKE_RANLIB=$NDK/x86_64-linux-android-ranlib ...

已修复此问题。对于另一个库,它不工作,也需要添加

代码语言:javascript
运行
复制
-DCMAKE_C_COMPILER_RANLIB=$NDK/x86_64-linux-android-ranlib -DCMAKE_CXX_COMPILER_RANLIB=$NDK/x86_64-linux-android-ranlib ...

此外,您可能还需要添加对ar ndk工具的引用

代码语言:javascript
运行
复制
-DCMAKE_AR=$NDK/x86_64-linux-android-ar

添加CCXX取决于您使用的是gcc/clang还是gcc++/clang++。要设置正确的编译器,请使用像DCMAKE_C_COMPILERcmakeDCMAKE_CXX_COMPILER这样的标志。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52397410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档