4.1 嵌入式系统开发工具链
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
objdump:显示对象文件的信息 ranlib:根据归档文件中内容建立索引 readelf:显示elf格式执行文件中的各种信息 size:显示object文件和执行文件各段的总大小 strings:显示文件中可以打印的字符 strip:去掉执行文件中多余的信息(如调试信息) gprof:用来显示图表档案数据
源码安装gcc过程(3)
建立目标目录 目标目录(用${objdir}表示)是用来存 放编译结果的地方。
例如,可以这样建立一个叫 gcc-build 的目标 目录(与源目录${srcdir}是同级目录):
mkdir gcc-build cd gcc-build
以下的操作主要是在目标目录 ${objdir} 下进 行。
源码安装gcc过程(2)
解压缩 根据压缩格式,假设下载格式为tar.gz:
tar xzvf gcc-4.1.1.tar.gz
新生成的gcc-4.1.1这个目录被称为源目 录(用${srcdir}表示它)。在 ${srcdir}/INSTALL目录下有详细的GCC安 装说明,可用浏览器打开index.html阅读。
源码安装gcc过程(7-1)
gcc、g++、gcj的设置 要想使用GCC 4.1.1的gcc等命令,简单的 方法就是把它的路径${destdir}/bin放在环 境变量PATH中。也可不用这种方式,而是用符 号连接的方式实现,这样做的好处是我仍然可以 使用系统上原来的旧版本的GCC编译器。
源码安装gcc过程(7-1续)
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的前端。
strong linux2.6 arm xscale linux2.6
3、源码安装gcc过程(1)
★ ★★
下载 在GCC网站上 (http://gcc.gnu.org/)或者通过网上搜 索可以查找到下载资源。目前GCC的最新版本 为 4.5.2,我们以for x86的4.1.1为例来说 明源码安装过程。可供下载的文件一般有两种 式:gcc-4.1.1.tar.gz和gcc4.1.1.tar.bz2,只是压缩格式不一样,内容 完全一致,下载其中一种即可。
二、GNU交叉开发环境的建立
1. 编译源码配置安装GNU交叉开发环境。 2. 直接安装二进制形式的工具链
两种方式
1、编译源码方式建立交叉开发环境
1. 下载交叉编译器源码包 2. 解压缩 3. 编译(系统必须已经安装了本地编译器) 4. 安装
2、直接安装二进制工具链
特点:
适合初学者 寻找难度视具体的目标板而定 binutils、GCC、glibc库有依赖关系 GNU Tools与linux内核关系表
../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++
GNU既支持本地程序开发,又支持交叉编译
GNU开发工具简介
GNU开发工具
自由软件 完备的工具链: GCC、binutils、gdb、 GNU make、patch、CVS 、开发库 命令行方式:使用稍复杂、功能强大 下载: www.gnu.org
ARM平台GNU开发工具
基于ARM7平台的GNU开发工具 (uclinux)
源码安装gcc过程(8)
测试 用新的编译命令(gcc4、g++4等)编 译你以前的C、C++程序,检验新安装的 GCC编译器是否能正常工作。 根据需要,可以删除或者保留${srcdir}和 ${objdir}目录。
★★
4、二进制方式安装arm-elf-gcc
cygwin下安装交叉工具链
arm-elf-tools-cygwin.sh armtools.tar.gz EmbestArmTool.exe
这样,就可以分别使用gcc4、g++4来调用GCC 4.1.1的gcc、g++完成对C、C++程序的编译 了。同时,仍然能够使用旧版本的GCC编译器中的 gcc、g++等命令。
源码安装gcc过程(7-2)
库路径的设置 将${destdir}/lib路径添加到环境变量 LD_LIBRARY_PATH中,最好添加到系统的配置文 件中,这样就不必要每次都设置这个环境变量了。 例如,如果GCC 4.1.1安装在 /usr/local/gcc-4.1.1目录下,在RH Linux下可 直接在命令行上执行或者在文件/etc/profile中添加 下面一句: export LD_LIBRARY_PATH=/usr/local/gcc4.1.1/lib:$LD_LIBRARY_PATH
将GCC安装在/usr/local/gcc-4.1.1目录下,支持 C/C++语言,其它选项参见GCC提供的帮助说明。
源码安装gcc过程(5)
编译
make
这是一个漫长的过程。在P4-1.6机器上, 这个过程用了50多分钟
源码安装gcc过程(6)
安装
make install
执行下面的命令将编译好的库文件等拷贝 ${destdir}目录中(根据你设定的路径,可能 需要管理员的权限): 至此,GCC 4.1.1安装过程就完成了。
组件介绍(续)
5. diff/diff3/sidff:比较文本差异的工 具,也可以用来生成补丁。 6. patch:补丁安装程序,可根据diff生成的 补丁来更新程序 7. CVS:版本控制系统。用于管理发行版本 和控制在多位作者间同时编辑源码文件。
ARM公司的开发工具
ARM SDT 2.5.2 支持ARM9
主机 i386 i386 i386 i386
目标机 i386 ppc arm mips
系统内核 linux2.4 linux2.4 linux2.4 linux2.4 linux2.4 linux2.4
binutils 2.14.90 2.10.1 2.13.90 2.8.1 2.10.1 2.10.1 2.14 2.14
GNU Tools开发工具组成
GNU Tools是linux环境下最主要的开发 工具集,主要有以下几个部分:
编译开发工具:把源程序编译为可执行文件, 如gcc。 调试工具:对执行程序进行源码或汇编级调试 的软件,如gdb。 软件工程工具:用于协助多人开发或大型软件 项目的管理的软件,如make、cvs等。
组件介绍(续)
3. gdb:GNU调试器。可以用来调试C、 C++和其他语言编写的程序。如加一些图 形前端(如DDD),可以在图形环境下调 试程序。 4. GNU make:是一个用来控制可执行程序 生成过程、从其他源码文件中生成可执行程 序的程序。它允许用户生成和安装软件包, 而无需了解生成、安装软件包的过程。
ARM公司的开发工具(续)
RealView MDK是完备的嵌入式开发环 境,它包括多个组成部分: uVision3集成 开发环境、RealView C/C++编译器、 RealView宏汇编器、RealView工具 集、RTL-ARM实时库、uVision调试器以 及GNU GCC。 RealView MDK作为当今最高效的开发工 具,具有优良的特性。 RealView MDK有评估版和完整版,评估 版具有很大的限制。
★
组件介绍(续)
2. binutils
是一组二进制工具程序集合,是辅助GCC的主 要软件。 主要包括:
as:GNU汇编器 ld:GNU链接器 ar:创建归档文件,向库中添加/提取obj文件 nm:列出obj文件中的符号 objcopy:复制和转化obj文件
组件介绍(续)
2. binutils
主要包括:
源码安装gcc过程(7)
设置 GCC 4.1.1的所有文件,包括命令文件 (如gcc、g++)、库文件等都在${destdir} 目录下分别存放,如命令文件放在bin目录下、 库文件在lib下、头文件在include下等。由于 命令文件和库文件所在的目录还没有包含在相应 的搜索路径内,所以必须要作适当的设置之后编 译器才能顺利地找到并使用它们。
首先,查看原来的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
交叉汇编器
目标文件
开发环境分类
开发环境分类:
运行平台:本地开发环境、交叉开发环境 商业角度:收费工具、免费工具
GNU工具链
GNU工具链:
GNU Tools:全称(GNU Development Toolchains) GNU Tools交叉开发环境:全称(GNU Cross-Plateform Development Toolchains)
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)
gcc 3.3.1 2.95.3 3.2.1 Egcs1.1.2 2.95.2 2.95.3 3.3.3 3.3.2
glibc 2.3.2 2.2.1 2.3.1 2.0.6 2.1.3 2.2.3 2.3.2 2.3.2
patchs no no yes yes no yes yes yes
sparc pps ppc i3源自文库6 i386 arm
源码安装gcc过程(4)
配置 配置的目的是决定将GCC编译器安装到什么地方 (${destdir}),支持什么语言以及指定其它一些选项 等。其中,${destdir}不能与${objdir}或${srcdir} 目录相同。配置是通过执行${srcdir}下的configure来完 成的。命令为(记得用你的真实路径替换${destdir}):
arm-elf-as arm-elf-gcc arm-elf-g++ arm-elf-ld arm-elf-objcopy
ARM平台GNU开发工具(续)
基于ARM9平台的GNU开发工具(ARM linux)
arm-linux-as arm-linux-gcc arm-linux-g++ arm-linux-ld arm-linux-objcopy 下载:www.arm.linux.org.uk
嵌入式系统程序设计
大连理工大学软件学院 嵌入式系统工程系 赖晓晨
嵌入式系统开发工具链
嵌入式系统开发工具链概述 交叉开发环境的建立
★★★★
一、工具链概述
嵌入式系统软件开发流
高级语言编写 的源代码文件 交叉编译器 目标文件 目 标 系 统
主机系统
连接器/ 加载器
目标文件
目标处理器的 汇编语言编写 的源代码文件
Linux下安装
cygwin下安装arm-elf-gcc(1)
cygwin下安装arm-elf-gcc(2)
cygwin下安装arm-elf-gcc(3)
Linux下安装arm-linux-gcc
附:crosstool
crosstools是一个比较“智能”的交叉编译工具, 编译出一个可用的交叉编译工具链,总共需要7个 文件
源码安装gcc过程(3)
建立目标目录 目标目录(用${objdir}表示)是用来存 放编译结果的地方。
例如,可以这样建立一个叫 gcc-build 的目标 目录(与源目录${srcdir}是同级目录):
mkdir gcc-build cd gcc-build
以下的操作主要是在目标目录 ${objdir} 下进 行。
源码安装gcc过程(2)
解压缩 根据压缩格式,假设下载格式为tar.gz:
tar xzvf gcc-4.1.1.tar.gz
新生成的gcc-4.1.1这个目录被称为源目 录(用${srcdir}表示它)。在 ${srcdir}/INSTALL目录下有详细的GCC安 装说明,可用浏览器打开index.html阅读。
源码安装gcc过程(7-1)
gcc、g++、gcj的设置 要想使用GCC 4.1.1的gcc等命令,简单的 方法就是把它的路径${destdir}/bin放在环 境变量PATH中。也可不用这种方式,而是用符 号连接的方式实现,这样做的好处是我仍然可以 使用系统上原来的旧版本的GCC编译器。
源码安装gcc过程(7-1续)
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的前端。
strong linux2.6 arm xscale linux2.6
3、源码安装gcc过程(1)
★ ★★
下载 在GCC网站上 (http://gcc.gnu.org/)或者通过网上搜 索可以查找到下载资源。目前GCC的最新版本 为 4.5.2,我们以for x86的4.1.1为例来说 明源码安装过程。可供下载的文件一般有两种 式:gcc-4.1.1.tar.gz和gcc4.1.1.tar.bz2,只是压缩格式不一样,内容 完全一致,下载其中一种即可。
二、GNU交叉开发环境的建立
1. 编译源码配置安装GNU交叉开发环境。 2. 直接安装二进制形式的工具链
两种方式
1、编译源码方式建立交叉开发环境
1. 下载交叉编译器源码包 2. 解压缩 3. 编译(系统必须已经安装了本地编译器) 4. 安装
2、直接安装二进制工具链
特点:
适合初学者 寻找难度视具体的目标板而定 binutils、GCC、glibc库有依赖关系 GNU Tools与linux内核关系表
../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++
GNU既支持本地程序开发,又支持交叉编译
GNU开发工具简介
GNU开发工具
自由软件 完备的工具链: GCC、binutils、gdb、 GNU make、patch、CVS 、开发库 命令行方式:使用稍复杂、功能强大 下载: www.gnu.org
ARM平台GNU开发工具
基于ARM7平台的GNU开发工具 (uclinux)
源码安装gcc过程(8)
测试 用新的编译命令(gcc4、g++4等)编 译你以前的C、C++程序,检验新安装的 GCC编译器是否能正常工作。 根据需要,可以删除或者保留${srcdir}和 ${objdir}目录。
★★
4、二进制方式安装arm-elf-gcc
cygwin下安装交叉工具链
arm-elf-tools-cygwin.sh armtools.tar.gz EmbestArmTool.exe
这样,就可以分别使用gcc4、g++4来调用GCC 4.1.1的gcc、g++完成对C、C++程序的编译 了。同时,仍然能够使用旧版本的GCC编译器中的 gcc、g++等命令。
源码安装gcc过程(7-2)
库路径的设置 将${destdir}/lib路径添加到环境变量 LD_LIBRARY_PATH中,最好添加到系统的配置文 件中,这样就不必要每次都设置这个环境变量了。 例如,如果GCC 4.1.1安装在 /usr/local/gcc-4.1.1目录下,在RH Linux下可 直接在命令行上执行或者在文件/etc/profile中添加 下面一句: export LD_LIBRARY_PATH=/usr/local/gcc4.1.1/lib:$LD_LIBRARY_PATH
将GCC安装在/usr/local/gcc-4.1.1目录下,支持 C/C++语言,其它选项参见GCC提供的帮助说明。
源码安装gcc过程(5)
编译
make
这是一个漫长的过程。在P4-1.6机器上, 这个过程用了50多分钟
源码安装gcc过程(6)
安装
make install
执行下面的命令将编译好的库文件等拷贝 ${destdir}目录中(根据你设定的路径,可能 需要管理员的权限): 至此,GCC 4.1.1安装过程就完成了。
组件介绍(续)
5. diff/diff3/sidff:比较文本差异的工 具,也可以用来生成补丁。 6. patch:补丁安装程序,可根据diff生成的 补丁来更新程序 7. CVS:版本控制系统。用于管理发行版本 和控制在多位作者间同时编辑源码文件。
ARM公司的开发工具
ARM SDT 2.5.2 支持ARM9
主机 i386 i386 i386 i386
目标机 i386 ppc arm mips
系统内核 linux2.4 linux2.4 linux2.4 linux2.4 linux2.4 linux2.4
binutils 2.14.90 2.10.1 2.13.90 2.8.1 2.10.1 2.10.1 2.14 2.14
GNU Tools开发工具组成
GNU Tools是linux环境下最主要的开发 工具集,主要有以下几个部分:
编译开发工具:把源程序编译为可执行文件, 如gcc。 调试工具:对执行程序进行源码或汇编级调试 的软件,如gdb。 软件工程工具:用于协助多人开发或大型软件 项目的管理的软件,如make、cvs等。
组件介绍(续)
3. gdb:GNU调试器。可以用来调试C、 C++和其他语言编写的程序。如加一些图 形前端(如DDD),可以在图形环境下调 试程序。 4. GNU make:是一个用来控制可执行程序 生成过程、从其他源码文件中生成可执行程 序的程序。它允许用户生成和安装软件包, 而无需了解生成、安装软件包的过程。
ARM公司的开发工具(续)
RealView MDK是完备的嵌入式开发环 境,它包括多个组成部分: uVision3集成 开发环境、RealView C/C++编译器、 RealView宏汇编器、RealView工具 集、RTL-ARM实时库、uVision调试器以 及GNU GCC。 RealView MDK作为当今最高效的开发工 具,具有优良的特性。 RealView MDK有评估版和完整版,评估 版具有很大的限制。
★
组件介绍(续)
2. binutils
是一组二进制工具程序集合,是辅助GCC的主 要软件。 主要包括:
as:GNU汇编器 ld:GNU链接器 ar:创建归档文件,向库中添加/提取obj文件 nm:列出obj文件中的符号 objcopy:复制和转化obj文件
组件介绍(续)
2. binutils
主要包括:
源码安装gcc过程(7)
设置 GCC 4.1.1的所有文件,包括命令文件 (如gcc、g++)、库文件等都在${destdir} 目录下分别存放,如命令文件放在bin目录下、 库文件在lib下、头文件在include下等。由于 命令文件和库文件所在的目录还没有包含在相应 的搜索路径内,所以必须要作适当的设置之后编 译器才能顺利地找到并使用它们。
首先,查看原来的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
交叉汇编器
目标文件
开发环境分类
开发环境分类:
运行平台:本地开发环境、交叉开发环境 商业角度:收费工具、免费工具
GNU工具链
GNU工具链:
GNU Tools:全称(GNU Development Toolchains) GNU Tools交叉开发环境:全称(GNU Cross-Plateform Development Toolchains)
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)
gcc 3.3.1 2.95.3 3.2.1 Egcs1.1.2 2.95.2 2.95.3 3.3.3 3.3.2
glibc 2.3.2 2.2.1 2.3.1 2.0.6 2.1.3 2.2.3 2.3.2 2.3.2
patchs no no yes yes no yes yes yes
sparc pps ppc i3源自文库6 i386 arm
源码安装gcc过程(4)
配置 配置的目的是决定将GCC编译器安装到什么地方 (${destdir}),支持什么语言以及指定其它一些选项 等。其中,${destdir}不能与${objdir}或${srcdir} 目录相同。配置是通过执行${srcdir}下的configure来完 成的。命令为(记得用你的真实路径替换${destdir}):
arm-elf-as arm-elf-gcc arm-elf-g++ arm-elf-ld arm-elf-objcopy
ARM平台GNU开发工具(续)
基于ARM9平台的GNU开发工具(ARM linux)
arm-linux-as arm-linux-gcc arm-linux-g++ arm-linux-ld arm-linux-objcopy 下载:www.arm.linux.org.uk
嵌入式系统程序设计
大连理工大学软件学院 嵌入式系统工程系 赖晓晨
嵌入式系统开发工具链
嵌入式系统开发工具链概述 交叉开发环境的建立
★★★★
一、工具链概述
嵌入式系统软件开发流
高级语言编写 的源代码文件 交叉编译器 目标文件 目 标 系 统
主机系统
连接器/ 加载器
目标文件
目标处理器的 汇编语言编写 的源代码文件
Linux下安装
cygwin下安装arm-elf-gcc(1)
cygwin下安装arm-elf-gcc(2)
cygwin下安装arm-elf-gcc(3)
Linux下安装arm-linux-gcc
附:crosstool
crosstools是一个比较“智能”的交叉编译工具, 编译出一个可用的交叉编译工具链,总共需要7个 文件