在带有 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 的性能方面,我认为:
B) 比 A) 好,因为它允许在链接时考虑优化更多代码(特别是 ZeroMQ 中的代码)。
A) 仍然比完全不使用 LTO 好。
我的理解正确吗?谢谢!