gcc中的共享库是否可以进行概要文件引导优化?

gcc中的共享库是否可以进行概要文件引导优化?,gcc,profiling,shared-libraries,compiler-optimization,Gcc,Profiling,Shared Libraries,Compiler Optimization,我最近在Linux上推出了一个新的工具链,GCC4.5.0和binutils 2.20都带有gold。现在我对PGO这个新东西很好奇。虽然很清楚它是如何处理可执行文件的,但我还没有找到关于共享库的答案。我通过谷歌在gcc邮件列表上发现了两条未回复的帖子,仅此而已 下面是我试过的: 只要我不标记-fprofile generate,一切都很好,我的.dlopen()也被主程序调用,并且工作完美。 当编译并与-fprofile-generate链接时,库被加载,一切正常,但是当我结束主程序时,我得到

我最近在Linux上推出了一个新的工具链,GCC4.5.0和binutils 2.20都带有gold。现在我对PGO这个新东西很好奇。虽然很清楚它是如何处理可执行文件的,但我还没有找到关于共享库的答案。我通过谷歌在gcc邮件列表上发现了两条未回复的帖子,仅此而已

下面是我试过的: 只要我不标记-fprofile generate,一切都很好,我的.dlopen()也被主程序调用,并且工作完美。 当编译并与-fprofile-generate链接时,库被加载,一切正常,但是当我结束主程序时,我得到一个带有coredump的sigsegv

我将corefile输入到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

我与PGO建立了一个共享库

我要做的是用profile generate生成的所有.o文件构建一个“profile”目录。然后我将它们链接到一个共享库中。然后,我使用链接到同样使用profile generate构建的可执行文件的库运行分析


之后,我构建了一个“release”目录,其中包含使用概要文件构建的所有.o文件,将它们链接到一个共享库中,我就有了一个使用PGO构建的共享库。

您是如何运行GDB的?我猜你是这么做的:“gdb核心”。改为:“gdb exename core”。很可能,您将获得更有意义的堆栈跟踪。或者,从一开始就在GDB下运行可执行文件:“GDB exename”然后“run”。GDB exename core正是我运行GDB的方式。因此,通过这种方式,您可以创建两个配置文件-一个用于共享对象,一个用于可执行文件,对吗?您是否以某种方式将它们作为命令行参数传递给gcc?或者gcc自动查找并使用它们(如果在默认目录和默认名称中创建)?