无法在 gcc 中执行基于配置文件的优化 (PBO)

Posted

技术标签:

【中文标题】无法在 gcc 中执行基于配置文件的优化 (PBO)【英文标题】:Unable to perform Profile based optimization(PBO) in gcc 【发布时间】:2014-03-20 14:39:12 【问题描述】:

我无法在 gcc 中使用 PBO 选项 (-fprofile-generate & -fprofile-use) 优化我的代码。

我首先编译我的代码,如下所示: gcc -fprofile-generate test.c -o test

生成配置文件数据(.gcda 文件)后,我正在重新编译我的代码,如下所示: gcc -fprofile-use test.c -o test

但我看不出优化代码和未优化代码之间的汇编代码有什么区别。两者看起来都一样。

我是否还应该使用优化标志(例如-O1-O2)和-fprofile-generate/-fprofile-use 来生成优化代码。

【问题讨论】:

【参考方案1】:

我不确定,但如果我没记错的话,PBO 必须在链接处手动指定:

gcc -O3 -fprofile-generate -c -MMD -MP -MF test.d -MT test.d -o test.o src/test.c
gcc -O3 -fprofile-generate -o test test.o

然后:

gcc -O3 -fprofile-use -c -MMD -MP -MF test.d -MT test.d -o test.o src/test.c
gcc -O3 -fprofile-use -o test test.o

【讨论】:

以上是关于无法在 gcc 中执行基于配置文件的优化 (PBO)的主要内容,如果未能解决你的问题,请参考以下文章

基于GCC的编译器的优化等级的执行原理

如何将 GCC LTO 与不同优化的目标文件一起使用?

在gnc gcc编译器的已配置搜索路径中找不到文件可执行文件

B站视频教程笔记基于VSCode和CMake实现C/C++开发 | Linux篇(gcc/g++)(安装配置使用详细教程)(VSCode教程)(CMake教程)(精!)

(Linux)gcc进行优化编译的参数是啥?

拥抱PBO(基于项目的组织)聚焦核心价值创造