链接后如何获取bitcode llvm?

How to get bitcode llvm after linking?

我正在尝试获取一个文件的 LLVM IR,该文件 link 使用一些静态库编辑。

我尝试 link 使用 llvm-link 。它只是将 .bc 文件复制到一个文件中(不像本机 linking)。

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

我的主要目标是获取包含所有已解析符号和引用的 .bc 文件。我怎样才能用 clang 版本 3.4 实现这一点?

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

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

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

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