SPM*_*PMP 14 c++ cmake llvm clang lto
我正在尝试在CMake项目上应用链接时间优化和LLVM,这将创建一个共享库.我的问题几乎和这个问题一样:
但是,答案似乎不再适用,因为llvm-ld新版本中不存在.在命令行上,我运行以下命令来获取LTO(假设只有2个.cpp文件):
编译为字节代码:
clang++ -c FirstClass.cpp -O3 -flto -o FirstClass.bc
clang++ -c SecondClass.cpp -O3 -flto -o SecondClass.bc
Run Code Online (Sandbox Code Playgroud)
链接字节码:
llvm-link FirstClass.bc SecondClass.bc -o unoptimized.bc
Run Code Online (Sandbox Code Playgroud)
优化字节码:
opt -O3 unoptimized.bc -o optimized.bc
Run Code Online (Sandbox Code Playgroud)
将字节代码转换为共享对象:
clang++ -shared optimized.bc -o libTest.so
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何让CMake运行其他步骤吗?
Cha*_*uth 10
使用Clang和启用LTO的正确方法是在编译和链接时使用命令行的-flto标志.clang
此外,您需要在具有链接器的平台上工作,该链接器直接支持LTO(通常是Apple的平台)或具有LLVM链接器插件(Linux使用Gold链接器,但我认为有些人已经获得了BFD链接器以支持链接器插件也是如此).如果您正在使用链接器插件,则需要确保安装了LLVM并安装了该插件.如果是这样,Clang将自动添加必要的链接器命令行选项,以便在链接时使用该插件-flto,即使对于共享对象也是如此.
此外,LLVM项目正在开发一个新的链接器(LLD),它将在它支持的所有平台上支持LTO开箱即用,但它仍处于早期阶段.目前我知道有人在Windows和Linux上测试其LTO支持,它似乎运行良好但仍然遗漏了许多功能.
| 归档时间: |
|
| 查看次数: |
7390 次 |
| 最近记录: |