当前位置:嗨网首页>书籍在线阅读

04-工具链

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

22.1.2 工具链

为了编译、连接并调试Linux应用程序和内核,我们首先需要建立针对目标板处理器的GNU工具链。

GNU工具链有力地支撑了Linux系统的发展,由于它可被看作许多嵌入式处理器的一个交叉编译器,所以在嵌入式软件开发中相当流行,其支持包括ARM、StrongARM、XScale、PowerPC、MIPS、68K/ColdFire、Intel x86/IA-32、Intel i960、Hitachi SH在内的多种体系结构。GNU工具链中大多数有用的工具主要集中于以下几个源代码包中。

● GCC包,主要包括gcc(C编译器)、g++(C++编译器)、cpp(C预处理器)。

● Binutils (binary utilities)包,主要包括as(汇编程序)、ld(连接器)、objcopy(目标文件翻译器,用于从连接器输出中创建一个ROM映像)、objdump(目标文件阅读器,用于反汇编目标文件)。

● glibc/uclibc/newlib,提供系统调用和基本函数的C库,比如open()、malloc()、printf()等。

● Make,主要包括make工具。

● Debugger,主要包括gdb(源代码调试器)。

上述源代码包都可以从gnu FTP站点上直接下载,如为了建立ARM Linux的GNU工具链,我们需下载newlib、binutils、gcc和gdb代码包。在解压缩、针对特定处理器配置、编译并安装这样软件包后,便可以使用它们进行交叉编译与开发。配置、编译与安装的所需执行的命令步骤如下:

(1)cd [binutils-build]

(2)[binutils-source]/configure --target=arm-elf --prefix=[toolchain-prefix] --enable

interwork --enable-multilib

(3)make all install

(4)export PATH="$PATH:[toolchain-prefix]/bin"

(5)cd [gcc-build]

(6)[gcc-source]/configure --target=arm-elf --prefix=[toolchain-prefix] --enable-interwork --

enable-multilib --enable-languages="c,c++" --with-newlib --with-headers=[newlib-source]/newlib/

libc/include

(7)make all-gcc install-gcc

(8)cd [newlib-build]

(9)[newlib-source]/configure --target=arm-elf --prefix=[toolchain-prefix] --enable

interwork--enable-multilib

(10)make all install

(11)cd [gcc-build]

(12)make all install

(13)cd [gdb-build]

(14)[gdb-source]/configure --target=arm-elf --prefix=[toolchain-prefix] --enable-inter

work --enable-multilib

(15)make all install

当使用交叉编译器的时候,程序通常用前缀来指示目标的体系结构和连接器的输出格式,如arm-linux-gcc、arm-linux-gdb、powerpc-linux-gcc等。

建立交叉工具链的过程相当繁琐,我们不必亲自操作,可以直接下载第三方编译好了的、开放的、针对目标处理器的交叉工具链,如在http://www.codesourcery.com/gnu_toolchains/上可以下载针对ARM、ColdFire和 Power的工具链。

本书配套光盘提供的VirtualBox虚拟机映像中,已经包含了制作好的arm-linux-gcc等。