【问题标题】:What is clang's equivalent to -rdynamic gcc flag?什么是clang相当于-rdynamic gcc标志?
【发布时间】:2014-01-22 09:33:25
【问题描述】:

我找不到将所有函数名称包含到最终发布二进制文件中的任何类似选项。还是clang默认做的?

【问题讨论】:

    标签: c++ macos clang


    【解决方案1】:

    这个问题的正确答案是-Wl,-export_dynamic不是 -Wl,--export-dynamic

    -Wl,--export-dynamic 仅当您在 ELF 平台上使用 GNU 链接器时才正确。

    这个问题是关于 OS X 的。

    来源: http://www.opensource.apple.com/source/ld64/ld64-236.3/src/ld/Options.cpp

    ...
    else if ( strcmp(arg, "-export_dynamic") == 0 ) {
        fExportDynamic = true;
    }
    ...
    

    【讨论】:

    • 这应该是公认的答案。 (在 Catalina 上使用 AppleClang 测试)
    【解决方案2】:

    至少 clang 3.3 似乎支持 -rdynamic 尽管clang --help 和手册页都没有记录它。 (如果您在 OSX 上,则不需要 -rdynamic)

    gcc -rdynamic 说“-rdynamic 将标志 --export-dynamic 传递给支持它的目标上的 ELF 链接器。"

    所以clang 也应该能够对-Wl,--export-dynamic 做同样的事情。

    【讨论】:

    • 我的错,应该补充一下,我的意思是 OS X。为什么不需要它?
    • 在OSX上默认将所有符号放到全局符号表中
    • Clang 5 不支持-export-dynamic,但支持-rdynamic
    【解决方案3】:

    我的 Google-fu 告诉我您可以将其替换为

    -Wl,--export-dynamic
    

    这是 GCC 在传递 -rdynamic 时通常传递给链接器的内容。我会先尝试一下,看看是否需要标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-13
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-12
      • 2017-03-17
      • 2020-09-01
      相关资源
      最近更新 更多