我们自己可以编译制作一个交叉编译工具链(Cross-compile Toolchain)来用,但为了方便、稳定起见,我们大多数时候会去选择成熟的第三方工具链。
codesourcery的交叉工具链是很常见的一种,以ARM为例,我们可以从http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite处下载到最新的版本:
Target OS | Download |
---|---|
EABI | Sourcery G++ Lite 2010.09-51 All versions... |
uClinux | Sourcery G++ Lite 2010.09-58 All versions... |
GNU/Linux | Sourcery G++ Lite 2010.09-50 All versions... |
SymbianOS | Symbian ADT Sourcery G++ Lite 4.4-172 All versions... |
可以看到有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++.
Target Platform | Description |
---|---|
EABI/ELF | RTOS systems or bare metalsystems where no operating system is present. These configurations should not be used to build Linux kernels or applications. |
uClinux™ | Systems running uClinux, i.e. Linux on CPUs without an MMU. Use Sourcery G++ to build both the uClinux kernel and applications. |
GNU/Linux® | Systems running fullLinux, i.e., Linux on CPUs with an MMU. Use Sourcery G++ to build both the Linux kernel and applications. |
Microsoft Windows® | Systems running Microsoft Windows 2000, or later. |
也就是说,如果打算用来编译linux kernel或者基于linux的应用程序,则应该选择GNU/Linux;EABI/ELF适用于没有操作系统(或者RTOS)的裸机;uClinux适用于没有MMU的Linux。
这下明白了?