GCC 配置文件引导优化与共享库,无法控制可执行文件

Posted

技术标签:

【中文标题】GCC 配置文件引导优化与共享库,无法控制可执行文件【英文标题】:GCC profile guided optimization with shared library with no control over executable 【发布时间】:2012-01-12 15:37:17 【问题描述】:

我们在 gcc4.2/MacOS 下编译的音频单元上尝试了 gcc 的分析选项。 (从技术上讲,它是一个库。)问题是我们无法控制加载库的可执行文件。因此,我们只能将库与分析选项链接,但不能将可执行文件链接。

在这些情况下,我们如何(如果有的话)使用配置文件引导优化?

干杯!

【问题讨论】:

我相信你不走运。您可能可以在库中启用初始化例程来打开分析 - 在这种情况下,您将不会在加载库之前对代码进行分析。但是由于可执行文件没有准备好进行分析,它很可能不会产生非常有用的信息。它可能会产生有关您的库代码的有用信息,但我不想依赖它。 【参考方案1】:

您不能编写自定义可执行文件来加载(和测试)库吗?这将在您的控制之下,并且可以通过分析来构建。

【讨论】:

是的,但是我们需要调用的API有点复杂。我们可能会在某个时候走这条路,但首先我需要说服某人单元测试是一件好事;-)

以上是关于GCC 配置文件引导优化与共享库,无法控制可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

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

除了静态库之外,我还可以使用“gcc -llibnamehere”绑定共享库吗?

从 gcc 3.3.3 到 4.1.0 的移植,C++ 模板,未定义的引用

带有 GCC 的 C/C++:将资源文件静态添加到可执行文件/库

Linux - 为啥我的可执行文件将 libpthread 作为共享库?

控制共享库的导出符号时,与“gcc -fvisibility=hidden”等效的 CMake 是啥?