Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CMake使用LLVM LLD发送单个IR位码文件_Cmake_Llvm_Lld - Fatal编程技术网

使用CMake使用LLVM LLD发送单个IR位码文件

使用CMake使用LLVM LLD发送单个IR位码文件,cmake,llvm,lld,Cmake,Llvm,Lld,我正在使用Ubuntu 16.04 x86_64和LLVM 5.0,并希望使用CMake将一个项目编译为单个LLVM IR位代码文件。我知道有一种方法可以使用黄金链接器和LLVM插件来实现这一点,并添加CMake链接器标志“-fuse ld=GOLD-Wl,-Plugin opt=emit LLVM”和CXX标志“-flto” 但是,当我尝试使用LLVM LLD链接器和“-fuse ld=LLD-Wl,-plugin opt=emit LLVM”分别“-flto”标志编译项目时,链接器生成的是一

我正在使用Ubuntu 16.04 x86_64和LLVM 5.0,并希望使用CMake将一个项目编译为单个LLVM IR位代码文件。我知道有一种方法可以使用黄金链接器和LLVM插件来实现这一点,并添加CMake链接器标志“-fuse ld=GOLD-Wl,-Plugin opt=emit LLVM”和CXX标志“-flto”

但是,当我尝试使用LLVM LLD链接器和“-fuse ld=LLD-Wl,-plugin opt=emit LLVM”分别“-flto”标志编译项目时,链接器生成的是一个本机可执行文件,而不是LLVM IR文件。我正在搜索其他LLD选项以发出LLVM IR文件,但未找到任何内容


是否有方法(或选项)使用LLD生成单个LLVM IR文件?

您可以使用
-save temps
选项

clang -flto -fuse-ld=lld -Wl,-save-temps a.o b.o -o myprogram

这将在其他文件中生成
myprogramXYZ.precodegen.bc
。然后,您可以使用
llvm dis
以可读的IR格式获取它。

您确定这对您不起作用吗?我自己并没有尝试过,但本文保证它会起作用:。是的,黄金链接器可以发出单个LLVM IR文件。但我希望能够生成单个LLVM IR位代码文件或本机可执行文件。项目应该链接到静态LLVM IR库,黄金链接器在生成本机可执行文件时无法链接到该库。所以LLD链接器可以做到这一点,但我不知道如何使用LLD生成LLVM IR文件。