53得票5回答
如何在CMake中启用链接时优化(LTO)?

我已经拥有最新的cmake构建,并尝试所有的构建配置(Debug、MinSizeRel、RelWithDebugInfo、Release、General),但在生成的makefile中(文本搜索)找不到字符串"-lto",因此这个功能可能还没有出现,或者需要手动干预。在这种情况下,对文档进行L...

48得票2回答
GCC Profile Guided Optimization (PGO)收集什么信息,哪些优化使用它?

当我启用-fprofile-generate时,GCC会收集哪些信息,实际上使用了哪些优化来使用收集的信息(当设置-fprofile-use标志时)? 我需要引文。 我已经搜索了一段时间,但没有找到任何文档记录。 涉及链接时优化(LTO)的信息将是一个加分项! = D

35得票2回答
使用GCC的链接时优化与静态链接库

我正在尝试使用GCC(6.1.1)的-flto标志进行链接时优化。 虽然我的代码可以正常工作,但它无法与我同时构建和链接到项目中的静态库一起链接(该项目为Engine,库是glsl-optimizer,仅供参考)。 以下是输出内容:... /usr/bin/ranlib: ir_expre...

26得票3回答
LLVM和CMake实现LTO

我正在尝试在使用CMake创建共享库的项目中,使用LLVM进行链接时优化(Link Time Optimization)。我的问题与此问题几乎相同。 然而,由于新版本中已经没有llvm-ld,因此答案似乎不再适用。在命令行中,我运行以下命令来获取LTO(假设只有2个.cpp文件): 将代码...

24得票2回答
我该如何在静态库中使用LTO?

当我尝试使用-flto构建静态库时,我会遇到未定义的引用错误:library.cpp:#include <iostream> void foo() { std::cout << "Test!" << std::endl; } main.cpp:void...

23得票2回答
为什么使用LTO会增加Rust二进制文件的大小?

介绍 我完成了一个小的 Rust 项目(大约 300 行代码),使用以下依赖项: rumqtt signal log env_logger 问题 当在没有进一步配置的情况下使用 cargo build --release 时,会生成一个大小为 2,942,744 字节(= 2.8 ...

21得票2回答
在gcc中,lto和fat-lto-objects有什么区别?

我尝试使用以下标志将我的源代码编译为汇编语言: 1. -flto 2. -flto -ffat-lto-objects 3. -flto -fno-fat-lto-objects 根据文档,第三个标志提供了优化的slim LTO代码,但是我在输出的汇编文件中没有看到第一和第二个之间的任何区别...

20得票1回答
GCC LTO包装器是什么?

我正在使用Buildroot为嵌入式系统准备镜像。我想导出Buildroot内部的交叉编译器,以便其他人可以使用相同的版本。在检查GCC版本的命令之后:arm-linux-gcc -v,我看到COLLECT_LTO_WRAPPER配置到我的硬盘上的静态位置。 COLLECT_LTO_WRA...

17得票1回答
在 Fedora 18 上,Clang 的链接时优化无法正常工作

我是clang的新手,所以很可能是我做了一些愚蠢的事情。但我已经花费了数小时寻找解决方案,包括在这里搜索,但没有找到解决-flto与发行版提供的软件包相结合的问题的问题。这个描述的细节特定于Fedora 18,但我在Ubuntu 13.04上也遇到了类似的问题,因此问题不特定于Fedora。要...

16得票1回答
使用flto的要求

如果我想要使用-flto编译我的项目,只构建gcc时加上--enable-gold是否就足够了?还是我还需要构建gold并用它替换ld?我需要任何其他标志吗?也就是说,我正在做这个:gcc -flto one.c two.c