使用CMake使用LLVM LLD发送单个IR位码文件
我正在使用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文件,但未找到任何内容使用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”标志编译项目时,链接器生成的是一
是否有方法(或选项)使用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文件。