我们自己可以编译制作一个交叉编译工具链(Cross-compile Toolchain)来用,但为了方便、稳定起见,我们大多数时候会去选择成熟的第三方工具链。
codesourcery的交叉工具链是很常见的一种,以ARM为例,我们可以从http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite处下载到最新的版本:
可以看到有4个OS平台版本可供选择,那么该选择哪一个下载呢?
在codesourcery的一个页面上我们找到了答案:
This table applies to the target system on which your applications will run, not to the host system on which you run Sourcery G++.
RTOS systems or bare metal
systems where no operating system is present. These configurations should not be used to build Linux kernels or applications.
Systems running uClinux, i.e. Linux on CPUs without an MMU. Use Sourcery G++ to build both the uClinux kernel and applications.
Systems running full
Linux, i.e., Linux on CPUs with an MMU. Use Sourcery G++ to build both the Linux kernel and applications.
Systems running Microsoft Windows 2000, or later.
也就是说,如果打算用来编译linux kernel或者基于linux的应用程序,则应该选择GNU/Linux;EABI/ELF适用于没有操作系统(或者RTOS)的裸机;uClinux适用于没有MMU的Linux。
这下明白了?
抱最大的希望,为最大的努力,做最坏的打算