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

Emitting a single IR bitcode File with LLVM LLD using CMake

我正在使用 Ubuntu 16.04 x86_64 和 LLVM 5.0,并希望使用 CMake 将项目编译为单个 LLVM IR 位码文件。我知道有一种方法可以使用带有 LLVM 插件的 GOLD 链接器并添加 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 格式获取它。