使用Android ndk-build输入/输出错误

时间:2015-07-22 21:05:54

标签: android-ndk

使用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之外的所有相同文件。

2 个答案:

答案 0 :(得分:1)

这两组ABI之间的区别在于失败的ABI链接使用ld.gold而工作的ABI使用ld.bfd。

要尝试两件事:

  • 使用4.9工具链。它有望修复错误。
  • 如果这不起作用,您可以将-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以使用它。