GCC是否支持多种目标架构?

时间:2013-12-14 19:46:05

标签: gcc cpu-architecture

是否可以编译支持多个目标体系结构的单个gcc(前端)二进制文件,我可以在命令行中选择它,如下所示:

$ gcc --architecture=linux-i386 ...
$ gcc --architecture=freebsd-arm ...
$ gcc --architecture=darwin-amd64 ...

我知道可以将gcc构建为交叉编译器,但是可以使用命令行标志选择目标体系结构,而无需编写包装脚本来为每个体系结构启动不同的gcc二进制文件吗?

对于i386和amd64 -m32-m64似乎可以解决问题,但如何选择ARM等?请注意,-march=对我来说看起来毫无用处,我无法将其从i386更改为amd64。

2 个答案:

答案 0 :(得分:3)

简短回答是“不”,你不能。有一些类型的交叉编译器,但是对于一个能够支持一堆目标的二进制文件,它需要工具的大小非常庞大并且需要系统头。

答案 1 :(得分:0)

功能多版本化https://gcc.gnu.org/wiki/FunctionMultiVersioning在那里,包括自动调度;

静态版本控制是手动的;没有实现针对不同体系结构的自动多版本化;这是它的功能要求https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78464

相关问题