【问题标题】:llvm-ld still exist for clang 3.4 ?llvm-ld 对于 clang 3.4 仍然存在吗?
【发布时间】:2013-07-20 17:43:14
【问题描述】:

上次我检查 clang 时它的版本是 3.1/3.2,现在我在 Ubuntu 13.04 64 位下,我从官方 apt 存储库安装了 clang 和 llvm(加上工具),但没有 @ 的踪迹987654321@、llvm-ld-3.0llvm-ld-3.1 是我的机器上唯一可用的这个工具的 2 个版本,我的问题是:我应该用什么替换 llvm-ld 并生成一个库或机器可执行文件?

【问题讨论】:

    标签: c++ c linker llvm ld


    【解决方案1】:

    llvm-ld 不再存在。来自LLVM 3.2 release notes

    llvm-ld 和 llvm-stub 已被移除,llvm-ld 功能可以部分替换为 llvm-link |选择 | {llc |如,llc -filetype=obj} | ld,或完全被 Clang 替换。

    或者,以更好的格式:

    1. 将所有 .bc / .ll 文件与 llvm-link 链接,以获得一个位码文件
    2. 运行opt优化bitcode文件
    3. 生成一个目标文件,通过其中一个
      • llc 获取 asm 文件,然后系统汇编程序 (as) 获取目标文件
      • llc -filetype=obj 获取目标文件(这只是自己调用系统汇编程序)
    4. 系统链接器 (ld) 将您的目标文件与所有其他所需的目标文件链接

    至于为什么被删除,请查看this LLVM-dev discussion

    另外,您可能对这个相关问题感兴趣:How to link object to libraries with LLVM >= 3.1 ? ( no GNU ld )

    【讨论】:

    • 所以基本上唯一的选择是 GNU ld ?我很好奇他们为什么这样做以及在 MAC OS X 环境中会发生什么,他们也在 MAC 下使用ld 吗?我的好奇心也是关于-O4优化级别,这种情况下该怎么办?
    • @user2485710 更新了我的答案。我提供的链接还提到让 LTO 工作。
    猜你喜欢
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多