LTO:它是什么以及如何在Gentoo上使用它

什么是LTO?

LTO 是的首字母缩写 链接时间优化。 在此操作中,编译器会在链接源文件时延迟优化,使您可以将构成单个可执行文件的所有文件视为一个文件,从而以更有效的方式应用优化。

欲获得更多信息: 的维基 GCC.

看看优点和缺点 LTO: 基准 Phoronix

注意事项

  • 它是不稳定的,可能会在某些程序包中引起问题。
  • 某些软件包将无法编译(有关稍后如何解决此问题的更多信息)。
  • 建议使用链接器 黄金.
  • 使用 SIEMPRE 最新版本 GCC.

黄金,除了支持使其更有吸引力的高级功能 LTO,它比 gnu ld特别是涉及大型程序时 快5倍。 要使用它,请运行:

binutils-config --linker ld.gold


使用LTO:推荐方法

而不是激活 LTO 在全局范围内(可能会导致问题),最好在所需的软件包中将其激活。 这样,只有您想从中受益的软件包 LTO 它们是使用这种优化来编译的,或者避免了无法从中受益的程序的编译时间变慢。 这可以通过以下方式实现:

在/ etc / portage / env目录中,我们创建文件 配置文件 然后添加以下几行:

CFLAGS="${CFLAGS} -flto=5" #pon en -flto los hilos  de tu CPU + 1
CXXFLAGS="${CXXFLAGS} -flto=5" #igual que arriba
LDFLAGS="${LDFLAGS} -fuse-linker-plugin" #solo si usas Gold, es mejor.

因此,使用 LTO 在一个包中,我们只需将其名称(全名,www-client / firefox,而不是firefox)放在文件中 包.env随着 配置文件 在你的右边。 下面是一个示例:

app-emulation/wine LTO.conf
www-client/firefox LTO.conf
sys-devel/gcc LTO.conf
kde-base/kdelibs LTO.conf

现在我们只需要编译我们想要它们使用的软件包 LTO.


全局使用LTO(不推荐)

而不是申请 LTO 逐个包地打包,我们也可以将其全局应用(这就是我所使用的)。 要应用它,请遵循以下步骤:

我们编辑/etc/portage/make.conf文件并添加以下内容(它们与文件中的行相同) 配置文件):

CFLAGS="${CFLAGS} -flto=5" #pon en -flto los hilos  de tu CPU + 1
CXXFLAGS="${CXXFLAGS} -flto=5" #igual que arriba
LDFLAGS="${LDFLAGS} -fuse-linker-plugin" #solo si usas Gold, es mejor.

反过来,我们创建文件/etc/portage/env/no-LTO.conf并添加以下行:

CFLAGS="${CFLAGS} -fno-lto -fno-use-linker-plugin"
CXXFLAGS="${CXXFLAGS} -fno-lto -fno-use-linker-plugin"
LDFLAGS="${LDFLAGS} -fno-lto -fno-use-linker-plugin"

并在文件中 包.env 我们将放置编译失败的软件包 LTO。 他 这是我的 包.env (请注意,我使用 配置文件 而不是 无LTO.conf).

我们还必须添加 LTO 使用的变量 配置文件,这是必要的,因为 Gentoo的 他们正在(缓慢地)添加可选补丁,以便在某些软件包中使用此优化。

完成此操作后,让我们重新编译所有系统软件包:

emerge -e @world @system --keep-going &> errores

通过使用–keep-going,我们正在告诉 波蒂奇 忽略错误,而 &> 将所有错误的输出重定向到名为错误的文件,使用该文件查看哪些软件包无法编译并将其添加到以下列表中 包.env.

&>将剥夺我们的所有输出,如果我们想查看流程的输出,则必须使用(以root身份)此命令:

tail -f /var/log/emerge.log

就这样,我希望我没有留下任何疑问,如果我会振作起来并写一篇有关 OpenMP的 和/或 石墨.


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   MSX

    Gentoo,嗯...
    让我们开始重要的事情:石墨!

    1.    x11泰特11x

      愚蠢而感性的Graphite xD,使xD系统破裂的不正常事物,我记得我上次使用它时,足以使a迭代50次,执行“ notify-send KDE <3”,以便迭代数字50,环境将崩溃到地狱哈哈哈哈哈,是的,我要去重新种xD

    2.    路人

      我已经说过,我仍然很受鼓舞,并成为了Graphite之一。 但是无论如何,石墨(以及其他优化方法)最适合LTO。 另外,与LTO不同,Graphite和OpenMP都有问题。 并非所有程序都会从​​中受益,而在那些未从中受益的程序中,性能会下降,因此在这种情况下,最好仅将其用于少数软件包。