是否可以使用gcc中的共享库进行配置文件引导优化?

时间:2010-06-02 20:06:16

标签: gcc profiling shared-libraries compiler-optimization

我最近在Linux上推出了一个新的Toolchain,gcc 4.5.0和binutils 2.20 with gold。现在我对这个新事物PGO感到好奇。虽然很清楚它是如何与可执行文件一起工作的,但我还是找不到共享库的答案。我通过谷歌在gcc邮件列表上找到了两个未答复的帖子,就是这样。

所以这就是我的尝试: 只要我不标记-fprofile-生成一切都很好,我的.so是由主程序dlopen()编辑并且完美无缺。 当编译和链接-fprofile-generate时,库被加载,一切正常,但是当我结束主程序时,我得到一个带有coredump的sigsegv。

我将核心文件提供给gdb并得到了这个:

#0 0x00000000 in ?? ()
No symbol table info available.
#1 0x1f32bc2f in ?? ()
No symbol table info available.
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

当然没有保存.cdda文件。

有什么想法吗?

Philipp

1 个答案:

答案 0 :(得分:2)

我与PGO建立了一个共享库。

我所做的是使用profile-generate构建一个包含所有.o文件的“profile”目录。然后我将它们链接到一个共享库。然后我使用链接到也使用profile-generate构建的可执行文件的库进行分析运行。

之后,我构建了一个“发布”目录,其中包含使用profile-use构建的所有.o文件,将它们链接到共享库中,并且我有一个使用PGO构建的共享库。