在gcc中同时使用“-arch i386”和"-arch x86_64"是什么意思?


难道编译出来的结果同时支持x86和x64么

c gcc C++

ぁ飛あ鳥ぇ 10 years, 11 months ago

不知道gcc,但是从cpu角度分析一下:

i386 是intel的较早期的32位处理器的名称,与 i486 i586 等是一个系列的,这个系列也叫 x86 。而且保持着例如486兼容386这种向下兼容的特性,指定 i386 可以做到最广泛的对32位处理器的兼容性

但是intel在64位的处理器上却输给了AMD,AMD基于x86率先推出了兼容32位的64位处理器,而且获得市场认可,称为 amd64 。由于这种64位的处理器也可以运行在32位模式下,所以也称为 x86-64

发展到现在实际上只有两个常用的标准,一个是intel的32位标准 x86 ,一个是amd的64位标准 amd64 (虽然 amd64 同样是从 x86 发展起来的)。

当然intel也有自己的64位标准称为IA-64,即安腾处理器。

根据我的理解,回答你的问题:
i386 编译的程序的目标CPU平台为32位兼容即可
x86-64 编译的程序的目标平台只能是64位兼容

以上分析仅是个人理解,如有不妥还请指正。

永远D风雅 answered 10 years, 11 months ago

Your Answer