amobbs.com 阿莫电子技术论坛

标题: arm-linux-gcc 和 gcc 下面 带参数-mcpu 指定arm有什么区别呢 [打印本页]

作者: imjacob    时间: 2019-12-23 22:39
标题: arm-linux-gcc 和 gcc 下面 带参数-mcpu 指定arm有什么区别呢
今天突然想到一个问题,交叉编译的时候我们经常用arm-linux-gcc, 但原始的gcc也是带参数-mcpu 指定arm处理器,这两种方式有什么区别呢?
作者: chunjiu    时间: 2019-12-23 22:45
差别可大了,arm-linux-gcc 和 gcc 用的库不是一码事儿,最后链接的方式也完全不同。不知道怎么简要的说明白,能简单说清楚的兄弟们请闪亮登场!
作者: 了无    时间: 2019-12-24 00:03
坐板凳等听课
作者: xintao    时间: 2019-12-24 07:51
那么两者编出来的程序都可以在arm上用吗?还是后者不能用,如果不能用,那么有啥用?
作者: a105    时间: 2019-12-24 08:26

坐板凳等听课
作者: 笑笑我笑了    时间: 2019-12-24 08:36
LZ你试过吗? gcc没有 -mcpu=arm 选项。
作者: azeng    时间: 2019-12-24 09:38
你原始的GCC带 -mcpu=arm 类似的指令的话,应该是使用的 gcc-multilib,可以同时支持不同架构的C库。
作者: syj0925    时间: 2019-12-24 15:39
同问,需要大神解答一下。。
作者: zhonghua_li    时间: 2019-12-24 16:40
gcc 应该是基于X86 指令的编译器吧。应该不会鸟你的 -mcpu-arm。
作者: imjacob    时间: 2019-12-24 19:19
笑笑我笑了 发表于 2019-12-24 08:36
LZ你试过吗? gcc没有 -mcpu=arm 选项。

文档上写着有,而且我刚刚去试了,有的
作者: sunliezhi    时间: 2019-12-24 20:34
gcc 一般是指在PC安装linux系统时定制安装的开发工具,用在本地编译, 可以编译在本地执行的源文件。
“本地”相对于“交叉”。
作者: 笑笑我笑了    时间: 2019-12-24 21:30
imjacob 发表于 2019-12-24 19:19
文档上写着有,而且我刚刚去试了,有的

那就是7楼说的情况了,我本地的gcc用-mcpu=arm会报错。
  1. gcc: 警告:已弃用‘-mcpu=’;请改用‘-mtune=’或‘-march=’
  2. cc1: 错误:bad value (‘arm’) for ‘-mtune=’ switch
  3. cc1: 附注:valid arguments to ‘-mtune=’ switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm intel x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 btver1 btver2 generic native
复制代码



作者: jameszxj    时间: 2019-12-25 11:26
本帖最后由 jameszxj 于 2019-12-25 11:27 编辑

我理解-mcpu是给同一架构下的不同类型的CPU编译优化使用的。
arm,x86都是架构
作者: imjacob    时间: 2019-12-25 21:06
jameszxj 发表于 2019-12-25 11:26
我理解-mcpu是给同一架构下的不同类型的CPU编译优化使用的。
arm,x86都是架构 ...

嗯。感觉有些道理。以x86架构来说,里面有什么haswell,broadwell等,mcpu是来指定这个的。    以arm来说 ,里面又有 cortexa-a9,a15,-mcpu是来指定这个的。
作者: gao_yc    时间: 2019-12-25 23:02
目前版本的 gcc 已经废弃了 -mcpu 这个选项,要用 -mtune 或者 -march 了
作者: imjacob    时间: 2019-12-26 12:12
gao_yc 发表于 2019-12-25 23:02
目前版本的 gcc 已经废弃了 -mcpu 这个选项,要用 -mtune 或者 -march 了

废弃不要紧,关键是意思, -mtune, 或者 -march 和 arm-linux-gcc 的差别呢




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4