为什么qmake在链接时将-Wl,O1传递给gcc,这会损害LTO?

时间:2018-11-20 01:30:54

标签: gcc qmake

我注意到在默认发行版配置中,链接时,qmake(qmake 3.1,qt 5.9.5-在我的Ubuntu构建框中安装了任何工具)将-Wl,O1传递给g ++。所以链接命令行看起来像

g++ -Wl,-O1 -flto -O2 -o program program.o lib1.a lib2.a ...

其中-flto -O2是我通过QMAKE_LFLAGS_RELEASE传递的用于启用LTO的选项。

现在的问题是:为什么qmake具有此-Wl,-O1选项,并且会干扰LTO吗?

1 个答案:

答案 0 :(得分:1)

QMake传递-Wl,O1,因为它是一个很好的默认值。

这不会损害LTO,因为您的-O2选项稍后出现并覆盖了-Wl,O1。

在g ++的手册页中:

  

如果使用多个-O选项(带或不带级别号),则   最后一种选择是有效的选择。

您可以通过指定

从您的Makefile中删除-Wl,-O1
QMAKE_LFLAGS_RELEASE -= -Wl,-O1