【问题标题】:How to get bitcode llvm after linking?链接后如何获取位码llvm?
【发布时间】:2021-01-27 05:58:35
【问题描述】:

我正在尝试为与一些静态库链接的文件获取 LLVM IR。

我尝试使用 llvm-link 进行链接。它只是将 .bc 文件复制到一个文件中(不像原生链接)。

clang -L$(T_LIB_PATH) -lpthread -emit-llvm 给出错误:emit-llvm can not be used with linking。当传递-c 选项时,它会警告未使用链接选项。

我的主要目标是获取包含所有已解析符号和引用的 .bc 文件。如何使用 clang 3.4 版实现这一目标?

【问题讨论】:

    标签: clang llvm llvm-ir


    【解决方案1】:

    你可以看看wllvm。它是编译器的一个包装器,可以构建项目并提取整个程序的 LLVM 位码。

    C 和 C++ 需要分别使用 wllvmwllvm++(设置一些环境变量后)。

    【讨论】:

    • 你是救生员 :)
    【解决方案2】:

    一些符号通过 LLVM IR 来自源代码。 IR 是中间表示的缩写。这些符号很容易处理,只需在构建过程中停止即可。

    其他一些来自库,可能是由其他编译器生成的,一个从不生成任何 IR 的编译器,无论如何编译器是由其他人在其他位置运行的。即使他们的编译器有正确的选择,您也无法及时让那些人为您构建 IR。您所能做的就是获取库的源代码并从源代码构建您的整个应用程序。

    【讨论】:

    • 我有所有的库源代码,我也不能链接。应该怎么做?
    猜你喜欢
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 2017-11-16
    相关资源
    最近更新 更多