是否可以编译支持多个目标体系结构的单个gcc
(前端)二进制文件,我可以在命令行中选择它,如下所示:
$ gcc --architecture=linux-i386 ...
$ gcc --architecture=freebsd-arm ...
$ gcc --architecture=darwin-amd64 ...
我知道可以将gcc构建为交叉编译器,但是可以使用命令行标志选择目标体系结构,而无需编写包装脚本来为每个体系结构启动不同的gcc
二进制文件吗?
对于i386和amd64 -m32
和-m64
似乎可以解决问题,但如何选择ARM等?请注意,-march=
对我来说看起来毫无用处,我无法将其从i386更改为amd64。
答案 0 :(得分:3)
简短回答是“不”,你不能。有一些类型的交叉编译器,但是对于一个能够支持一堆目标的二进制文件,它需要工具的大小非常庞大并且需要系统头。
答案 1 :(得分:0)
功能多版本化https://gcc.gnu.org/wiki/FunctionMultiVersioning在那里,包括自动调度;
静态版本控制是手动的;没有实现针对不同体系结构的自动多版本化;这是它的功能要求https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78464