出处:http://www.zdnet.com.cn/developer/code/story/0,3800066897,39142725,00.htm
作者: 翻译:javaresearch.org-Abel_Cao 2003-06-27 12:14 PM |
GNU编译器(GCC)是一个“免费”的C/C++工具链,有力的支撑了Linux系统的发展。由于它可被看作许多嵌入式处理器的一个交叉编译器,所以在嵌入式软件开发中是一个流行的工具。 支持的体系结构包括:
我最近使用Windows/MS-DOS主机上的GCC工具链并使用DJGPP完成了一个面向StrongARM 处理器的项目。我发现这个工具链非常可靠,而且能够产生快速高效的机器码。 GCC工具链中大多数有用的工具主要集中于以下几个源代码包中: GCC 包
Binutils (binary utilities) 包
Make
Debugger
当使用交叉编译器的时候,程序通常用前缀来指示目标的体系结构和连接器的输出隔世。例如, arm-elf-as是GCC 工具链中的汇编程序编译器,针对ARM 处理器并产生ELF 格式的二进制代码。这种命名约定避免了对众多以”gcc”命名的针对不同体系结构的编译器的使用混淆。 你可以从GNU FTP site.免费下载GCC个工具的全部源代码。本文不包括怎样从这些源代码创建一个交叉编译器,而CrossGCC FAQ 提供了很好的文档和详细指令。但在你准备使用FTP下载之前,本文会给你一些有益的帮助。 |
选择一个主机系统为了生成一个GCC交叉编译器,首先需要你在机器上安装一个原始的GCC便一起。这是因为GCC源代码只能被它自身编译,而不能使用Microsoft VC++或其他编译器。下面是一些可选的主机系统和相关工具。 Linux Windows/Cygwin Windows/MS-DOS 支持库做完这些,你可能需要一个针对目标处理器的标准的C 运行库。在使用GCC是通常使用这两个库:glibc和 newlib. glibc 是针对PC应用设计的,对大多数嵌入式应用来说都显得过于笨重。另一方面,newlib 是面向嵌入式系统的, 明显的简洁高效。这些库都是开放源代码的,可以使用GCC 交叉编译器来重新编译。 授权问题GCC 和 newlib 库对嵌入式系统开发者的授权发布比较宽松。总体上讲,如果你使用了这些工具和库,你不需要公开你的源代码和知识产权,这是一个常见的误解。 商用的 GCC 发布Red Hat 主动开发了GNU 工具链,并为那些不像自己建立工具链的开发者提供了GNUPro 工具箱。该工具箱包括了许多主机和嵌入式目标处理器的二进制工具。对于 Windows平台使用了 Cygwin 环境。目前,工具箱是与Red Hat 的其他软件捆绑销售的,所以走这条路要多花些钱。 |