【问题标题】:Specifying both -O2 and -O3 at same time同时指定 -O2 和 -O3
【发布时间】:2021-11-17 10:50:39
【问题描述】:

有些程序已经使用 -O2 标志,如果我使用 -O3 标志,程序会同时使用 -O2 和 -O3 进行编译,如任务管理器或 /proc/PID/cmdline 所示。

例如,我使用的是使用 Clang 和完整 LTO 构建的 Linux 内核。即使我在 dkms 配置中有这些行:

# /etc/dkms/framework.conf
export LLVM=1
export CC=clang
export CFLAGS="-O3 -march=native"

现在 DKMS 模块使用 -O2-O3 标志编译。在这种情况下,实际使用了哪个标志?

【问题讨论】:

    标签: gcc clang compiler-optimization


    【解决方案1】:

    gcc,见https://gcc.gnu.org/onlinedocs/gcc-11.2.0/gcc/Optimize-Options.html#Optimize-Options

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

    clang 没有详细记录其选项语法,但它通常会尝试与 gcc 兼容,因此在这方面应该是相同的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      • 2018-04-08
      • 2015-05-06
      • 1970-01-01
      相关资源
      最近更新 更多