链接后如何获取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++,你需要分别使用wllvm和wllvm++(设置一些环境变量后)。
我正在尝试获取一个文件的 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++,你需要分别使用wllvm和wllvm++(设置一些环境变量后)。