【发布时间】:2015-02-13 17:45:53
【问题描述】:
gcc -dumpmachine 几乎是完美的,但它不尊重影响目标的标志。另一方面,clang 会:
$ gcc -dumpmachine
x86_64-unknown-linux-gnu
$ gcc -dumpmachine -m32
x86_64-unknown-linux-gnu
$ clang -dumpmachine
x86_64-unknown-linux-gnu
$ clang -dumpmachine -m32
i386-unknown-linux-gnu
【问题讨论】:
-
可能不会,就 GCC 编译器本身而言,
-m32不会更改目标,就像-march=i486不会将目标更改为i486-unknown-linux-gnu。 -
我认为答案是否定的。虽然 clang 行为看起来很有用(特别是如果
-m32结果也支持-march选项,例如,如果合适,打印i686-...) -
注:
-m32不是“交叉编译”,它只是使用相同架构的不同指令集,它被称为 multilib 目标。 -
@JonathanWakely 实际上我认为
clang会这样做,但事实并非如此;即使-march-armv7-a将导致其目标从armv5te-...更改为arm7-...,-dumpmachine输出保持不变。跛脚!
标签: gcc clang cross-compiling compiler-options