嵌入式操作系统 2GNU(交又)开发工具链简介 陈香兰(xlanchenc@ustc.edu.cn) 计算机应用教研室。计算机学院 嵌入式系统实验室●苏州研究院 中国科学技术大学 Fa112014 November 28,2014 1口40.1是42在刀00 陈香兰(xlanchenoustc,edu,cn)(升界款应 长人式操作系统 ovenber28,20141/111
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 嵌入式操作系统 2 GNU(交叉)开发工具链简介 陈香兰(xlanchen@ustc.edu.cn) 计算机应用教研室@计算机学院 嵌入式系统实验室@苏州研究院 中国科学技术大学 Fall 2014 November 28, 2014 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) November 28, 2014 1 / 111
Outline 前言 ●交叉开发 GNU Too1s简介 ●GCC ●GNU binuti1s 。Gdb-调试器 ●GNU make一一软件工程工具 。GNU1d一一链接器 GNU too1s交叉开发环境的安装和试用 ●GNU tools交又开发环境的安装 ●使用安装好的交叉编译器编译he11o ●使用安装好的交叉编译器编译1inux ●编译uC1inux 小结和作业 1口41是42在刀00 陈香兰(xlanchenoustc,edu,cn)(升界丸应 长人式操作香统 ovenber28,20143/111
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline 1. 前言 交叉开发 .2 GNU Tools简介 GCC GNU binutils Gdb—调试器 GNU make——软件工程工具 GNU ld——链接器 .3 GNU tools 交叉开发环境的安装和试用 GNU tools 交叉开发环境的安装 使用安装好的交叉编译器编译hello 使用安装好的交叉编译器编译linux 编译µClinux 4. 小结和作业 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) November 28, 2014 3 / 111
交叉开发 。本地开发vs交叉平台开发 ①本地开发: 一般软件的开发属于本地开发,即 开发软件的系统与运行软件的系统是相同的· ®交叉平台开发: 本课程所涉及到的嵌入式系统开发属于交叉平台开发,即 开发软件的系统与运行软件的系统不同。 ●交叉开发平台 主机: 开发软件的平台,称为主机,往往是通用电脑: 目标机: 运行软件的平台·称为目标机,在这里是嵌入式系统。 1口401是42在刀00 陈香兰(xlanchenoustc,edu,cn)(计界机应 瓷人式操作委蛇 ovenber28,20146/111
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 交叉开发 本地开发 vs 交叉平台开发 1. 本地开发: 一般软件的开发属于本地开发,即 开发软件的系统与运行软件的系统是相同的。 2. 交叉平台开发: 本课程所涉及到的嵌入式系统开发属于交叉平台开发,即 开发软件的系统与运行软件的系统不同。 交叉开发平台 ▶ 主机: 开发软件的平台,称为主机,往往是通用电脑; ▶ 目标机: 运行软件的平台,称为目标机,在这里是嵌入式系统。 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) November 28, 2014 6 / 111
嵌入式交叉开发工具 。掌握嵌入式开发工具的使用是进行嵌入式开发的前提条件之一 ·与主流开发工具类似,嵌入式交叉开发工具也包括 编译器 即能够把一个源程序编译生成一个可执行程序的软件 调试工具 即能够对执行程序进行源码或汇编级调试的软件 软件工程工具 用于协助多人开发或大型软件项目的管理的软件 4口4四是4P在刀00 陈香兰(xlanchenoustc,edu,cn)(升界款应 长人式操作香统 ovenber28,20147/111
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 嵌入式交叉开发工具 掌握嵌入式开发工具的使用是进行嵌入式开发的前提条件之一 与主流开发工具类似,嵌入式交叉开发工具也包括 ▶ 编译器 即能够把一个源程序编译生成一个可执行程序的软件 ▶ 调试工具 即能够对执行程序进行源码或汇编级调试的软件 ▶ 软件工程工具 用于协助多人开发或大型软件项目的管理的软件 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) November 28, 2014 7 / 111
GNU tools 。GNU too1s和其他一些优秀的开源软件可以完全覆盖上述 软件开发工具。 。为了更好的开发嵌入式系统,需要熟悉如下一些软件 ·GCC一一GNU编译器集 Binuti1s一一辅助GCC的主要软件 ·Gdb一一调试器 ,make一一软件工程工具 diff,patch一一补丁工具 ·CVS一一版本控制系统 1口4四1是4P在刀0C 陈香兰(xlanchenoustc,edu,cn)(升界丸应 长人式操作香统 ovenber28,20148/111
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GNU tools GNU tools和其他一些优秀的开源软件可以完全覆盖上述 软件开发工具。 为了更好的开发嵌入式系统,需要熟悉如下一些软件 ▶ GCC——GNU编译器集 ▶ Binutils——辅助GCC的主要软件 ▶ Gdb——调试器 ▶ make——软件工程工具 ▶ diff, patch——补丁工具 ▶ CVS——版本控制系统 ▶ . . . 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) November 28, 2014 8 / 111
Outline 前言 GNU Too1s简介 。GCC o GNU binutils ·Gdb-调试器 ●GNU make一一软件工程工具 ●GNW1d一一链接器 GN而to01s交义开发环的安装和成用 小结和作业 4口4四1是14P刀00 陈香兰(xlanchenoustc,edu,cn)(升界丸应 长人式择作系统 ovenber28,20149/111
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline . 1. 前言 .2 GNU Tools简介 GCC GNU binutils Gdb—调试器 GNU make——软件工程工具 GNU ld——链接器 .3 GNU tools 交叉开发环境的安装和试用 4. 小结和作业 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) November 28, 2014 9 / 111
Outline 。交又开发 GNU Too1s简介 ●GCC o GNU binutils 。Gd山一调试器 。GNU make一软件工程工具 。GNT1d一链接器 。GN阳too1s交义开发环境的安装和武用 。GNU too1s交叉开发环境的安装 。使用安装好的交叉编译器编译he11o 。使用安装好的交又编译器编译1i 。编译C1inux @小结和作业 4口4四是4P,在刀00 陈香兰(xlanchenoustc,edu,cn)(升界丸应 长人式择作系统 oveaber28,201410/111
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline . 1. 前言 交叉开发 .2 GNU Tools简介 GCC GNU binutils Gdb—调试器 GNU make——软件工程工具 GNU ld——链接器 .3 GNU tools 交叉开发环境的安装和试用 GNU tools 交叉开发环境的安装 使用安装好的交叉编译器编译hello 使用安装好的交叉编译器编译linux 编译µClinux 4. 小结和作业 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) November 28, 2014 10 / 111
GCC--The GNU Compiler Collection ·不仅仅是C语言编译器 。目前,GCC可以支持多种高级语言,如 C、C++ ADA Ob,jective-C Ob,jective-C++ JAVA Fortran PASCAL 1口4四是42刀00 陈香兰(xlanchenoustc,edu,cn)(升界丸应 长人式操作香统 Novesber28,201411/111
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GCC——The GNU Compiler Collection 不仅仅是C语言编译器 目前,GCC可以支持多种高级语言,如 ▶ C、C++ ▶ ADA ▶ Objective-C、Objective-C++ ▶ JAVA ▶ Fortran ▶ PASCAL 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) November 28, 2014 11 / 111
GCC下的工具 。GCC下的工具包括 ·Cpp一预处理器 GNUC编译器在编译前自动使用cpp对用户程序进行预处理 ~gcc一符合IS0等标准的C编译器 ·g+一基本符合IS0标准的C++编译器 ~gcj一GCC的java前端 ·gnat一GCC的GNU ADA95前端 。等等 4口4四是4P在刀0C 陈香兰(xlanchenoustc,edu,cn)(升界款应 长人式操作香统 Novesber28,201412/111
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GCC下的工具 GCC下的工具包括 ▶ cpp — 预处理器 GNU C编译器在编译前自动使用cpp对用户程序进行预处理 ▶ gcc — 符合ISO等标准的C编译器 ▶ g++ — 基本符合ISO标准的C++编译器 ▶ gcj — GCC的java前端 ▶ gnat — GCC的GNU ADA 95前端 ▶ 等等 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) November 28, 2014 12 / 111
GNU Tools-gcc ●gCC 是一个强大的工具集合,它包含了预处理器、编译器、 汇编器、链接器等组件。它会在需要的时候调用其他组件。 输入文件的类型和传递给gcc的参数决定了gCC调用具体的 哪些组件。 ·对于开发者,它提供的足够多的参数,可以让开发者全面 控制代码的生成,这对嵌入式系统级的软件开发非常重要 4口4四是4P在刀0C 陈香兰(xlanchenoustc,edu,cn)(升界款应 长人式操作香统 Novesber28,201413/111
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GNU Tools—gcc gcc 是一个强大的工具集合,它包含了预处理器、编译器、 汇编器、链接器等组件。它会在需要的时候调用其他组件。 输入文件的类型和传递给gcc的参数决定了gcc调用具体的 哪些组件。 对于开发者,它提供的足够多的参数,可以让开发者全面 控制代码的生成,这对嵌入式系统级的软件开发非常重要 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) November 28, 2014 13 / 111