可以为不同的CPU交叉编译gcc吗?

时间:2011-11-24 05:28:16

标签: gcc compiler-construction

安装在fedora 16上的gcc是否可以针对不同的CPU交叉编译,比如说SPARC? 我已经建立了一定的理解,如果我错了,需要一些专家来纠正我。不同的操作系统因用于访问内核的系统调用或完全由他们使用的内核而不同。它是否正确?不同的内核了解访问底层硬件的不同系统调用。二进制文件或可执行文件或程序只是一堆系统调用。因此每个OS都有自己的可执行文件。一个可执行文件,意味着运行到Windows上,而不是在Linux上运行。通过交叉编译任何windown可执行文件的源代码,我们可以为其他操作系统生成可执行文件。单词PLATFORM意味着操作系统。 POSIX是类UNIX操作系统的某些设计标准。 我们通常交叉编译不同的操作系统。但我们也可以交叉编译不同的硬件吗?例如,在微控制器没有操作系统的情况下?

2 个答案:

答案 0 :(得分:11)

没有。您不能使用本机(x86)gcc来编译不同体系结构的程序文件。为此,您需要一个特定于该处理器体系结构的交叉编译器-gcc。

您对操作系统调用的理解是正确的。每个操作系统都有自己的一组系统调用,供库使用。最后这些库将被翻译成处理器的机器语言。

每个处理器架构都有自己的一组指令,称为指令集架构(ISA)。因此,当编译用高级语言(如C)编写的程序时,它应该从其ISA转换为机器语言。这项工作由编译器(gcc)完成。编译器将仅特定于一个处理器体系结构。例如gcc用于x86处理器。因此,如果您想在x86机器中使用不同处理器的编译器,那么您应该选择该处理器的交叉编译器。

答案 1 :(得分:2)

您必须构建这样的版本。这是将gcc移植到新平台的过程的一部分。您构建了一个交叉编译的版本,然后交叉编译该版本,然后在新平台上测试该版本,调试,冲洗和重复。