【问题标题】:Swift for Android: `ld` cannot find `-lgcc` in swift for android compilation linking stepSwift for Android:`ld` 在 swift 中找不到 `-lgcc` 以进行 android 编译链接步骤
【发布时间】:2017-03-30 17:23:11
【问题描述】:

从 Unix Stack Exchange 移动到这里,我的赏金失败了:

我正在尝试在 Ubuntu 16.04 LTS 上编译 Swift 代码,非常接近 these instructions。我可以下载 NDK r14,下载 libicu 工具并构建它们,然后下载 swift 源代码并针对 libicu 工具构建它。我一直在编译实际的 swift 代码并得到这个:

#build.sh 
#(I symlinked the androideabi ld.gold to /usr/bin/ld.armv7, based on a swift bug ticket's advice. Thats the only thing different from the instructions)

/home/mike/workspace/swift-source/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swiftc \
-use-ld=armv7 \
-tools-directory /home/mike/workspace/android-ndk-r14/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/arm-linux-androideabi/bin \
-target armv7-none-linux-androideabi \
-sdk /home/mike/workspace/android-ndk-r14/platforms/android-21/arch-arm \
-L /home/mike/workspace/android-ndk-r14/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a \
-L /home/mike/workspace/android-ndk-r14/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9 \
hello.swift


#output
mike@mike-VirtualBox:~/workspace/HelloSwift$ ./build.sh 
/usr/bin/ld.armv7: error: cannot find -lgcc
/usr/bin/ld.armv7: error: cannot find -lgcc
/usr/bin/ld.armv7: error: cannot find -lgcc
/usr/bin/ld.armv7: error: cannot find -lgcc

我在工具链中没有这么多的经验,但我肯定安装了 gcc,gcc-multilib 和 LD_LIBRARY_PATH 设置来帮助 ld 找到 gcc,我已经用 ldconfig 重建了 ld 缓存.

当我运行sudo ldconfig -p | grep gcc 时,我得到了

libgccpp.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libgccpp.so.1
libgcc_s.so.1 (libc6,x32) => /usr/libx32/libgcc_s.so.1 
libgcc_s.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libgcc_s.so.1
libgcc_s.so.1 (libc6) => /usr/lib32/libgcc_s.so.1

还有其他一些名为libuno_<something with gcc in it>的东西

【问题讨论】:

    标签: android swift ubuntu gcc android-ndk


    【解决方案1】:

    在最新版本的android-ndk-r14b中,所需的gcc库的位置是:

    /path/to/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x

    Swift Android 文档似乎已经过时了,指向:

    /path/to/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.

    确保在对swiftc 的调用中链接到此正确路径应该可以解决问题。

    (我已提交 this pull request 以确保其他人也不会遇到此问题。)

    【讨论】:

      猜你喜欢
      • 2016-03-17
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多