当前位置:文档之家› 4.1 嵌入式系统开发工具链

4.1 嵌入式系统开发工具链


组件介绍(续)
2. binutils
是一组二进制工具程序集合,是辅助GCC的主 要软件。 主要包括:
as:GNU汇编器 ld:GNU链接器 ar:创建归档文件,向库中添加/提取obj文件 nm:列出obj文件中的符号 objcopy:复制和转化obj文件
组件介绍(续)
2. binutils
主要包括:
二、GNU交叉开发环境的建立
1. 编译源码配置安装GNU交叉开发环境。 下载并解压缩交叉编译器相关源文件 修改配置文件 make 测试 2. 直接安装二进制形式的工具链
两种方式
1、编译源码方式建立交叉开发环境
1. 下载需要的包 如果只需要cross compile 内核,binutils和gcc就足够了,版本是 binutils-2.16.1 gcc-4.1.0 如果需要交 叉编译应用程序,那就还要再编译一份 glibc。
组件介绍(续)
5. diff/diff3/sidff:比较文本差异的工 具,也可以用来生成补丁。 6. patch:补丁安装程序,可根据diff生成的 补丁来更新程序 7. CVS:版本控制系统。用于管理发行版本 和控制在多位作者间同时编辑源码文件。
ARM公司的开发工具
ARM SDT 2.5.2 支持ARM9
GNU Tools开发工具组成
GNU Tools是linux环境下最主要的开发 工具集,主要有以下几个部分:
编译开发工具:把源程序编译为可执行文件, 如gcc。 调试工具:对执行程序进行源码或汇编级调试 的软件,如gdb。 软件工程工具:用于协助多人开发或大型软件 项目的管理的软件,如make、cvs等。
objdump:显示对象文件的信息 ranlib:根据归档文件中内容建立索引 readdlf:显示elf格式执行文件中的各种信息 size:显示object文件和执行文件各段的总大小 strings:显示文件中可以打印的字符 strip:去掉执行文件中多余的信息(如调试信息) gprof:用来显示图表档案数据
首先,查看原来的gcc所在的路径:
which gcc
上述命令显示:/usr/bin/gcc。因此:
cd /usr/bin ln -s ${destdir}/bin/gcc gcc4 ln -s ${destdir}/bin/g++ g++4 ln -s ${destdir}/bin/gcj gcj4
源码安装gcc过程(2)
解压缩 根据压缩格式,假设下载格式为tar.gz:
tar xzvf gcc-4.1.1.tar.gz
新生成的gcc-4.1.1这个目录被称为源目 录(用${srcdir}表示它)。在 ${srcdir}/INSTALL目录下有详细的GCC安 装说明,可用浏览器打开index.html阅读。
GNU Tools开发工具组件介绍
1. GCC(GNU Compiler Collection)
支持C、C++、ADA、Object C、Java、 Fortran、PASCAL等语言。 主要包括:
cpp:GNU C编译器的预处理器。 gcc:符合ISO标准的C编译器。 g++:基本符合ISO标准的C++编译器。 gcj:GCC的java前端。 gnat:GCC的GNU ADA 95的前端。
binutils 2.14.90 2.10.1 2.13.90 2.8.1 2.10.1 2.10.1 2.14 2.14
gcc 3.3.1 2.95.3 3.2.1 Egcs1.1.2 2.95.2 2.951 2.3.1 2.0.6 2.1.3 2.2.3 2.3.2 2.3.2
交叉汇编器
目标文件
开发环境分类
开发环境分类:
运行平台:本地开发环境、交叉开发环境 商业角度:收费工具、免费工具
GNU工具链
GNU工具链:
GNU Tools:全称(GNU Development Toolchains) GNU Tools交叉开发环境:全称(GNU Cross-Plateform Development Toolchains)
源码安装gcc过程(4)
配置 配置的目的是决定将GCC编译器安装到什么地方 (${destdir}),支持什么语言以及指定其它一些选项 等。其中,${destdir}不能与${objdir}或${srcdir} 目录相同。配置是通过执行${srcdir}下的configure来完 成的。命令为(记得用你的真实路径替换${destdir}):
这样,就可以分别使用gcc4、g++4、gcj4来调 用GCC 4.1.1的gcc、g++、gcj完成对C、 C++、JAVA程序的编译了。同时,仍然能够使用 旧版本的GCC编译器中的gcc、g++等命令。
源码安装gcc过程(7-1)
gcc、g++、gcj的设置 要想使用GCC 4.1.1的gcc等命令,简单的 方法就是把它的路径${destdir}/bin放在环 境变量PATH中。也可不用这种方式,而是用符 号连接的方式实现,这样做的好处是我仍然可以 使用系统上原来的旧版本的GCC编译器。
源码安装gcc过程(7-1续)
将GCC安装在/usr/local/gcc-4.1.1目录下,支持 C/C++和JAVA语言,其它选项参见GCC提供的帮助说 明。
源码安装gcc过程(5)
编译
make
这是一个漫长的过程。在P4-1.6机器上, 这个过程用了50多分钟
源码安装gcc过程(6)
安装
make install
执行下面的命令将编译好的库文件等拷贝到 ${destdir}目录中(根据你设定的路径,可能 需要管理员的权限): 至此,GCC 4.1.1安装过程就完成了。
../gcc-4.1.1/configure --prefix=/usr/local/gcc-4.1.1 -enable-threads --disable-checking --enable--long-long -host=i386-redhat-linux --with-system-zlib --enablelanguages=c,c++,java
交叉开发环境建立举例:
3. 编译gcc 为了用到上一步编译好的bintuils,确保 这些程序所在的目录在你的PATH变量里。跟前面 一样,先建一个build目录在开始工作
1. mkdir gcc-ppc-build 2. cd gcc-ppc-build 3. ../gcc-4.1.0/configure --target=powerpclinux --disable-nls --disable-shared -disable-threads --enable-languages=c -without-headers 4. make all-gcc 5. make install-gcc
编译源码方式建立交叉开发 环境建立举例(ppc):
交叉开发环境建立举例:
2. 编译要按顺序来,先编binutils再编gcc, 因为在编gcc的时候可能要用到前者。
1. mkdir binutils-ppc-build 2. cd binuitls-ppc-build 3. ../binutils-2.16.1/configure --target = powerpc-linux --disable-nls 4. make 5. make install
组件介绍(续)
3. gdb:GNU调试器。可以用来调试C、 C++和其他语言编写的程序。如加一些图 形前端(如DDD),可以在图形环境下调 试程序。 4. GNU make:是一个用来控制可执行程序 生成过程、从其他源码文件中生成可执行程 序的程序。它允许用户生成和安装软件包, 而无需了解生成、安装软件包的过程。
嵌入式系统程序设计
大连理工大学软件学院 嵌入式系统工程系 赖晓晨
嵌入式系统开发工具链
嵌入式系统开发工具链概述 交叉开发环境的建立
一、工具链概述
嵌入式系统软件开发流程
高级语言编写 的源代码文件 交叉编译器 目标文件 目 标 系 统
主机系统
连接器/ 加载器
目标文件
目标处理器的 汇编语言编写 的源代码文件
Armcc:ARM的C编译器 Tcc:Thumb的C编译器 Armlink:ARM链接器,生成ELF格式文件 Armsd:ARM和Thumb的符号调试器 Arm工程管理器 ADW
ARM公司的开发工具(续)
ARM ADS 1.2 支持全系列ARM处理器
代码生成工具(Code Generation Tools) 集成开发环境(CodeWarrior IDE from Metrowerks) 调试器(Debuggers) 指令集模拟器(Instruction Set Simulators) ARM 开发包(ARM Firmware Suite) ARM应用库(ARM Applications Library)
交叉开发环境建立举例:
4. 交叉编译内核
1. 为了不把你本机的kernel build环境搞乱,最 好另建一份build目录。执行配置命令 make ARCH=powerpc CROSS_COMPILE=powerpc-linuxmenuconfig 2. 编译内核 make ARCH=powerpc CROSS_COMPILE=powerpc-linux3. 编译成功后下载到目标机上,就可以拿来boot 了。
2、直接安装二进制工具链
特点:
适合初学者 寻找难度视具体的目标板而定 binutils、GCC、glibc库有依赖关系 GNU Tools与linux内核关系表
主机 i386 i386 i386 i386
相关主题