gcc的mtune和march选项分析

转载 2012年03月28日 17:59:55
给定gcc优化选项时经常要指定march和mtune。我以前都将它们赋为一样的值,例如pentium4.

今天仔细研究了一下它们的区别,原来还是有一些道道的。

首先是man gcc:

-mtune=name
      This option is very similar to the -mcpu= option, except that
      instead of specifying the actual target processor type, and hence
      restricting which instructions can be used, it specifies that GCC
      should tune the performance of the code as if the target were of
      the type specified in this option, but still choosing the instruc-
      tions that it will generate based on the cpu specified by a -mcpu=
      option.

上面是gcc3.2的manpage,现在mcpu已经不用了,一般都用march。望文生义,march指定的是当前cpu的架构,而mtune是真正作用于某一型号cpu的选项。

根据链接:
http://gentoo-wiki.com/Safe_Cflags
的解释,march是“紧约束”,mtune是“松约束”。mtune可以提供后向兼容性,也就是mtune=pentium-mmx编译出来的程序,在pentium4处理器上也是可以运行的。

因此,像-march=i686 -mtune=pentium4这样的优化选项编译出来的程序,是为奔腾4处理器优化过的,但是在任何i686上都可以运行。

我猜,如果指定了-march=pentium3,那么在奔腾4处理器上程序是不能运行的。

上面是自己根据别人的文档整理出来的一些说法,具体是不是这么回事没有试验过。若有错误的地方,还请大虾指正:-)

g++中的-march与-mtune的意义与使用方法

Next: i386 and x86-64 Windows Options, Previous: HPPA Options, Up: Submodel Options 3....
  • terminatorsong
  • terminatorsong
  • 2012年03月22日 20:19
  • 8265

march和mtune的区别

转自: http://blog.openrays.org/blog-htm-do-showone-tid-364.html 给定gcc优化选项时经常要指定march和mtune。我以前都将它...
  • lijiatong1005
  • lijiatong1005
  • 2013年08月09日 07:50
  • 3394

gcc/g++编译优化选项(一)

在进行C++编译时,有时候因为没有进行编译优化而导致程序运行效率慢,因此在这里介绍了gcc/g++编译优化的选项...
  • hit_090420216
  • hit_090420216
  • 2015年04月06日 10:49
  • 4889

gentoo的CFLEGS设置为-march=native到底优化了目标代码

安装Gentoo时,在编译内核这一步骤前,需要在make.conf文件中设置编译选项,如: CFLAGS=“-O2 -march=i686 -pipe” 其中-march选项就是就是指定目标架...
  • sailor201211
  • sailor201211
  • 2013年01月03日 21:52
  • 1655

如何查看arm-linux-gcc某个版本支持的-mcpu,-march可选值

alan@alan-virtual-machine:~/work/tools/arm-linux-gcc-4.4.3/bin$ ./arm-linux-gcc --target-help The f...
  • Alan0521
  • Alan0521
  • 2012年08月11日 23:18
  • 11437

gcc的mtune和march选项分析

给定gcc优化选项时经常要指定march和mtune。我以前都将它们赋为一样的值,例如pentium4. 今天仔细研究了一下它们的区别,原来还是有一些道道的。 首先是man gcc: ...
  • petib_wangwei
  • petib_wangwei
  • 2014年10月17日 15:39
  • 1342

【记录】查找关于S3C6410中的中的-march,-mcpu,-mtune以及-mfpu和-mfloat-abi

【背景】 看到有人问关于S3C2440de6410的CPU,关于FPU方面的配置。 现去查找整理一下。 【折腾过程】 1.关于crosstool-ng中的-march,-mcpu,-mtune的配置,...
  • danny1221
  • danny1221
  • 2014年02月05日 23:56
  • 1579

VLC-Android编译与运行

文章开头,不得不膜拜一下老外们的奉献分享精神!开发移动平台播放器,VLC-android是一个非常值得参考的开源项目,该文记录下实际的VLC-Android的编译运行过程! 该项目的下...
  • dtryl
  • dtryl
  • 2016年02月17日 17:35
  • 4089

gcc/g++编译优化选项(一)

在进行C++编译时,有时候因为没有进行编译优化而导致程序运行效率慢,因此在这里介绍了gcc/g++编译优化的选项...
  • hit_090420216
  • hit_090420216
  • 2015年04月06日 10:49
  • 4889

g++中的-march与-mtune的意义与使用方法

Next: i386 and x86-64 Windows Options, Previous: HPPA Options, Up: Submodel Options 3....
  • terminatorsong
  • terminatorsong
  • 2012年03月22日 20:19
  • 8265
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:gcc的mtune和march选项分析
举报原因:
原因补充:

(最多只允许输入30个字)