【问题标题】:What exactly does -march=native do?-march=native 到底是做什么的?
【发布时间】:2011-03-02 05:07:48
【问题描述】:

Gentoo Wiki 告诉我以下内容:

警告:GCC 4.2 及更高版本支持 -三月=本地。 -march=native 应用超出 -march 的附加设置, 特定于您的 CPU。除非你有 不这样做的具体原因(例如 distcc 交叉编译),你可能应该 使用 -march=native,而不是 下面列出的任何内容。

这些附加设置是什么?

【问题讨论】:

    标签: c++ c gcc gcc4


    【解决方案1】:

    没关系。

    $ cc -march=core2 -E -v - </dev/null 2>&1 | grep cc1
     /[...]/cc1 -E -quiet -v -iprefix /[...]/4.3.2/ - -march=core2
    
    $ cc -march=native -E -v - </dev/null 2>&1 | grep cc1
     /[...]/cc1 -E -quiet -v -iprefix /[...]/4.3.2/ - -march=core2 -mcx16 -msahf --param l1-cache-size=32 --param l1-cache-line-size=64 -mtune=core2
    

    我开始非常喜欢这个选项。 -mcx16-msahf 是 gcc 现在可以使用的两个额外的 CPU 指令,这在早期的 Core2 中是不可用的。

    【讨论】:

    • 在我的 i7 上,它还添加了-mpopcnt -msse4.2 --param l2-cache-size=8192,其中 POPCNT 是一条相当简洁的 CPU 指令。
    • 很奇怪。您是否将构建机器与您的软件一起提供?
    • @hans:哈哈,但是 OP 正在与 Gentoo 合作。这意味着没有人分发二进制文件,只有要在运行它的机器上编译的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 2013-09-02
    • 2014-01-02
    • 2013-10-10
    • 2017-05-08
    • 2022-01-20
    • 2012-10-17
    相关资源
    最近更新 更多