【问题标题】:How to enable Gold linker?如何启用黄金链接器?
【发布时间】:2015-08-17 18:15:07
【问题描述】:

我记得当 Gold 链接器被引入 NDK 时,有一个关于如何切换到它的说明。但现在我在文档中的任何地方都找不到该信息。那么,为了使用gold 链接器,我应该在Application.mk 中添加什么?

我试过这个标志: APP_LDFLAGS += -fuse-ld=gold --threads

它会抛出这个错误:

arm-linux-androideabi-g++:错误:无法识别的命令行选项--threads'

所以我怀疑这不是我正在链接的gold

【问题讨论】:

    标签: android-ndk linker gold-linker


    【解决方案1】:

    黄金链接器是 ARM(和 x86)的默认值。来自Revision 8c release notes

    为 Windows 工具链添加了黄金链接器 ld.gold。 黄金链接器是 也是所有主机上 ARM 和 X86 的默认设置。 您可以将其覆盖为 通过添加 LOCAL_LDFLAGS += -fuse-ld=bfd 来使用 ld.bfd 链接器 Android.mk,或通过将 -fuse-ld=bfd 传递给 g++/clang++ 命令行 这就是链接。

    看起来您的错误消息来自 C++ 编译器,而不是链接器。如果链接器是通过编译器调用的,那么您可以尝试使用-Wl,--threads 传递链接器参数。否则,也许您还在其他地方指定了--threads

    【讨论】:

    • 我刚刚添加了 --threads 标志 - 这是新的 gold 功能,多线程链接。考虑到我的应用程序在 3 分钟内编译但需要另外 4 分钟才能与 LTO 链接,这应该非常有用。 -Wl 可能会解决它!
    猜你喜欢
    • 2015-09-07
    • 2017-12-12
    • 2016-11-27
    • 2017-08-31
    • 2014-03-31
    • 2014-07-08
    • 2016-10-02
    • 2017-03-25
    • 2013-08-01
    相关资源
    最近更新 更多