【问题标题】:Input/output error using Android ndk-build使用 Android ndk-build 的输入/输出错误
【发布时间】:2015-07-22 21:05:54
【问题描述】:

使用 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-v8amipsmips64 构建,但失败并出现上述 armeabi错误>、armeabi-v7ax86x86_64

我有一个静态库项目和另一个共享库项目,它们都为所有 7 个 ABI 成功构建。

如果我比较 obj/local/ 的内容,一个 ABI 构建和一个不构建,它们都包含除了 libMyLib.so 之外的所有相同文件。

【问题讨论】:

    标签: android-ndk


    【解决方案1】:

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

    尝试两件事:

    • 使用 4.9 工具链。希望它能修复错误。
    • 如果这不起作用,您可以将 -fuse-ld=bfd 添加到您的 ldflags 以使用 bfd,即使在默认为黄金的架构上也是如此。

    【讨论】:

      【解决方案2】:

      在 r15c 中我也遇到了同样的问题。
      解决方法是复制 android-ndk-r15c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/arm-linux-androideabi/bin/ld.bfd over ld。
      我不得不复制它,因为在检测编译器功能时我无法轻易找到一种方法来指定这个标志给 CMake 以使用它。

      【讨论】:

        猜你喜欢
        • 2018-05-05
        • 1970-01-01
        • 2016-09-02
        • 1970-01-01
        • 2015-08-19
        • 2015-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多