【问题标题】:Why qmake passes -Wl,O1 to gcc when linking and will it harm LTO?为什么qmake在链接时将-Wl,O1传递给gcc,它会损害LTO吗?
【发布时间】:2018-11-20 01:30:53
【问题描述】:

我注意到在默认发布配置中,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 吗?

【问题讨论】:

    标签: gcc qmake


    【解决方案1】:

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

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

    来自 g++ 的手册页:

    如果您使用多个 -O 选项,无论有无级别编号, 最后一个这样的选项是有效的。

    您可以通过指定从 Makefile 中删除 -Wl,-O1

    QMAKE_LFLAGS_RELEASE -= -Wl,-O1
    

    【讨论】:

      猜你喜欢
      • 2014-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      相关资源
      最近更新 更多