安装在 fedora 16 上的 gcc 是否可以针对不同的 CPU(比如 SPARC)进行交叉编译? 我已经有了一定的认识,如有错误,还需要专家指正。不同的操作系统的不同之处在于它们用于访问内核的系统调用,或者完全在于它们使用的内核。这是正确的吗? 不同的内核理解访问底层硬件的不同系统调用。二进制文件、可执行文件或程序只不过是一堆系统调用而已。因此每个操作系统都有自己的可执行文件。本来要在 Windows 上运行的可执行文件却无法在 Linux 上运行。通过交叉编译任何windown可执行文件的源代码,我们可以为其他操作系统生成可执行文件。 “平台”一词的意思是操作系统。 POSIX 是类 UNIX 操作系统的某些设计标准。 我们通常会针对不同的操作系统进行交叉编译。但是我们也可以针对不同的硬件进行交叉编译吗?例如,如果微控制器没有操作系统?
不。您不能使用本机 (x86) gcc 来编译不同体系结构的程序文件。为此,您需要一个特定于该处理器架构的交叉编译器-gcc。
您对操作系统系统调用的理解是正确的。每个操作系统都有自己的一套系统调用,供库使用。这些库最后将被翻译成处理器的机器语言。
每个处理器架构都有自己的指令集,称为指令集架构(ISA)。因此,当编译用高级语言(如 C)编写的程序时,应将其从 ISA 转换为机器语言。这个工作是由编译器(gcc)完成的。编译器将仅特定于一种处理器架构。例如 gcc 适用于 x86 处理器。因此,如果您想要 x86 机器中不同处理器的编译器,您应该选择该处理器的交叉编译器。
您必须构建这样一个版本。这是将
gcc
移植到新平台过程的一部分。您构建一个交叉编译的版本,然后交叉编译该版本,然后在新平台上测试该版本,调试,冲洗,然后重复。