首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是GCC lto包装器?

什么是GCC lto包装器?
EN

Stack Overflow用户
提问于 2013-11-06 16:24:11
回答 1查看 10.5K关注 0票数 19

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

代码语言:javascript
复制
 COLLECT_LTO_WRAPPER=/home/user/arm/buildroot/output/host/usr/libexec/gcc/arm-unknown-linux-uclibcgnueabi/4.7.1/lto-wrapper

它在另一个系统上不会正确。

我只能发现LTO的意思是链接时间优化。你能解释一下lto包装器是用来做什么的吗?什么时候需要?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-08 09:46:18

‫当你编译一个可执行文件时,gcc将只为当前文件优化和合并相同的常量。通常情况下,由于ld链接了.o文件,所以无法分析整个程序。

‭‫这就是Interprocedural optimization的目的:编译整个可执行文件,就像它是一个源文件一样,允许使代码更加静态。

这有一个问题,LD不能真正识别导出的GIMPLES。

为此,我将使用lto插件(liblto_plugin.so.0.0.0),它直接调用make或lto-wrapper,后者调用lto1,其中每次启动lto1都负责生成一个‘‫‫’(参见-flto-‫‫选项和gcc文档中的lto-partitions参数)。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19807107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档