使用Android NDK R10E,我正在尝试为所有受支持的ABI构建一个共享库,我收到了以下错误,但是并非所有ABI都是:
[armeabi] SharedLibrary : libMyLib.so /home/user/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld:
fatal error: /home/user/source/MyLib/obj/local/armeabi/libMyLib.so: Input/output error
该项目已成功构建 arm64-v8a , mips 和 mips64 ,但因 armeabi 的上述错误而失败>, armeabi-v7a , x86 和 x86_64 。
我有一个静态库项目和另一个共享库项目,它们都成功构建了所有7个ABI。
如果我将 obj / local / 的内容与构建的ABI和不构建的ABI的内容进行比较,它们都包含除libMyLib.so之外的所有相同文件。
答案 0 :(得分:1)
这两组ABI之间的区别在于失败的ABI链接使用ld.gold而工作的ABI使用ld.bfd。
要尝试两件事:
-fuse-ld=bfd
添加到ldflags以使用bfd,即使在默认为黄金的体系结构上也是如此。答案 1 :(得分:0)
r15c中发生了相同的问题。
解决方法是复制
ld上的android-ndk-r15c / toolchains / arm-linux-androideabi-4.9 / prebuilt / linux-x86_64 / arm-linux-androideabi / bin / ld.bfd。
我不得不复制它,因为在检测编译器功能时,我无法轻易找到一种方法来指定此标志给CMake以使用它。