我注意到在默认发行版配置中,链接时,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吗?
答案 0 :(得分:1)
QMake传递-Wl,O1,因为它是一个很好的默认值。
这不会损害LTO,因为您的-O2选项稍后出现并覆盖了-Wl,O1。
在g ++的手册页中:
如果使用多个-O选项(带或不带级别号),则 最后一种选择是有效的选择。
您可以通过指定
从您的Makefile中删除-Wl,-O1QMAKE_LFLAGS_RELEASE -= -Wl,-O1