.so文件创建期间的链接器错误。错误:未实现功能

时间:2019-02-21 06:06:03

标签: android android-ndk shared-libraries ld clang++

在创建“.so”文件的链接阶段,“ld”链接器正在标记错误消息。

我尝试搜索它,但没有得到任何具体说明。该消息被标记为 “--trace”链接器标志已启用。 “--trace”转储链接步骤中使用的文件。平台为Windows

下面提到的是错误消息。链接过程中多次出现此消息。 任何线索将不胜感激。

错误:

arm-linux-androideabi/bin\ld: error: dummy.so: write: Function not implemented**

1 个答案:

答案 0 :(得分:0)

最近也遇到了此问题,并且仅在Windows上进行调试构建时才会发生。我从来没有想过要使LD链接程序满意并解决错误的代码修补程序。

但是,我能够切换到使用LLD LLVM链接器,并使调试版本在Windows上再次运行。切换后,LLD链接器发现了一些LD似乎从未检测到的链接器错误。解决这些问题后,我得以再次成功构建。

要切换为使用LLD链接器,我在构建中添加了以下链接器标志:

-fuse-ld=lld
-Wl,--no-threads

LDK链接器已在NDK r18中提供,因此您需要使用合适的NDK进行构建,否则标记将无法识别。

我正在使用CMake,所以我只是在共享库的target_link_libraries声明的末尾添加了这些标志。

我添加了第二个标志“ -Wl,-no-threads”,以禁用多线程链接,这显然在Windows上可能是一个问题,并导致其挂起(有关更多信息,请参见https://github.com/android-ndk/ndk/wiki/Changelog-r19)。 / p>

如果您使用的是ndk-build,则默认情况下应该已禁用多线程链接(从NDK r19b开始)。

注意:我目前正在使用NDK r19c进行构建。最终,Android NDK默认会切换到LLD LLVM链接器(估计为r21)。