2

在带有 g++4.9 的 Ubuntu 上,我按照它的说明构建了一个静态库(称为 libZeroMQ.a),并且它是在没有“-flto”(链接时间优化)的情况下构建的。

现在我正在开发一个使用 libZeroMQ.a 的项目(称为 MyEXE),我将静态链接所有库。我希望用 LTO 构建 MyEXE。

我有两个选择:

A) 构建 MyEXE,在编译和链接中使用“-flto”。与之前构建的 libZeroMQ.a 链接。

B) 修改(更改)ZeroMQ 的配置/构建脚本,添加“-flto”,并重建 libZeroMQ.a。然后通过与新的 libZeroMQ.a 链接来构建 MyEXE。当然,在编译和链接 MyEXE 时仍然使用“-flto”。

在 MyEXE 的性能方面,我认为:

  1. B) 比 A) 好,因为它允许在链接时考虑优化更多代码(特别是 ZeroMQ 中的代码)。

  2. A) 仍然比完全不使用 LTO 好。

我的理解正确吗?谢谢!

4

1 回答 1

2

我真的很难将其作为答案而不是评论,但这一个答案:

是的,你的理解是正确的。

于 2017-05-19T13:40:29.860 回答