基于s3c44B0X嵌入式uCLinux系统原理及应用.ppt
《基于s3c44B0X嵌入式uCLinux系统原理及应用.ppt》由会员分享,可在线阅读,更多相关《基于s3c44B0X嵌入式uCLinux系统原理及应用.ppt(131页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 基于s3c44B0X嵌入式uCLinux系统原理及应用主讲人:李岩哈尔滨理工大学计算机学院n本章主要内容:本章主要内容:(1)GCC编译过程(2)C/C+交叉编译器arm-elf-gcc(3)交叉汇编器 arm-elf-as(4)交叉连接器arm-elf-l d(5)工程管理器make(6)汇编语言编程(7)混合编程 第第 3 章章 目录目录1 GNU GCC简介简介2 C/C+交叉编译器交叉编译器arm-elf-gcc3 交叉连接器交叉连接器arm-elf-ld 3.1 需求分析需求分析4 工程管理器工程管理器 MAKE5 交叉汇编器交叉汇编器 arm-elf-as6 汇编语言编程汇编语言
2、编程7 简单程序设计简单程序设计8 混合语言编程混合语言编程 第第 3 章章 目录目录1 GNU GCC简介简介2 C/C+交叉编译器交叉编译器arm-elf-gcc3 交叉连接器交叉连接器arm-elf-ld 3.1 需求分析需求分析4 工程管理器工程管理器 MAKE5 交叉汇编器交叉汇编器 arm-elf-as6 汇编语言编程汇编语言编程7 简单程序设计简单程序设计8 混合语言编程混合语言编程3.1 GNU GCC简介简介 GNU集成编译环境集成编译环境GCC(GNU Compiler Collection)是一种面向嵌入式领域、支持多种编程是一种面向嵌入式领域、支持多种编程语言、支持多种
3、语言、支持多种CPU的交叉编译工具。的交叉编译工具。输出预处理后的输出预处理后的输出预处理后的输出预处理后的C/C+C/C+源程序(展开头文件和替换宏)源程序(展开头文件和替换宏)源程序(展开头文件和替换宏)源程序(展开头文件和替换宏)输出输出输出输出C/C+C/C+源程序的汇编代码源程序的汇编代码源程序的汇编代码源程序的汇编代码输出二进制目标文件输出二进制目标文件输出二进制目标文件输出二进制目标文件生成静态库生成静态库生成静态库生成静态库生成可执行程序生成可执行程序生成可执行程序生成可执行程序转换文件格式转换文件格式转换文件格式转换文件格式l lGNU GCCGNU GCC的基本功能的基本功
4、能的基本功能的基本功能3.1 GNU GCC简介简介lGCC组成-C/C+C/C+交叉编译器交叉编译器交叉编译器交叉编译器arm-arm-elf-elf-gccgcc arm-elf-gcc是编译的前端程序,它通过调用其是编译的前端程序,它通过调用其是编译的前端程序,它通过调用其是编译的前端程序,它通过调用其他程序来实现将程序源文件编译成目标文件的功能。他程序来实现将程序源文件编译成目标文件的功能。他程序来实现将程序源文件编译成目标文件的功能。他程序来实现将程序源文件编译成目标文件的功能。arm-elf-gcc具有丰富的命令选项,可以控制编具有丰富的命令选项,可以控制编具有丰富的命令选项,可以
5、控制编具有丰富的命令选项,可以控制编译的各个阶段,满足用户的各种编译需求。译的各个阶段,满足用户的各种编译需求。译的各个阶段,满足用户的各种编译需求。译的各个阶段,满足用户的各种编译需求。3.1 GNU GCC简介简介lGCC组成-汇编器汇编器汇编器汇编器 arm-elf-asarm-elf-as arm-elf-as将汇编语言程序转换为将汇编语言程序转换为将汇编语言程序转换为将汇编语言程序转换为ELFELF(Executable and Linking Format(Executable and Linking Format,执行时链接,执行时链接,执行时链接,执行时链接文件格式文件格式文件
6、格式文件格式)格式的可重定位目标代码,这些目标代格式的可重定位目标代码,这些目标代格式的可重定位目标代码,这些目标代格式的可重定位目标代码,这些目标代码同其它目标模块或函数库易于定位和链接。码同其它目标模块或函数库易于定位和链接。码同其它目标模块或函数库易于定位和链接。码同其它目标模块或函数库易于定位和链接。说明说明说明说明:arm-elf-asarm-elf-as产生一个交叉参考表和一个标准的符号表,产生一个交叉参考表和一个标准的符号表,产生一个交叉参考表和一个标准的符号表,产生一个交叉参考表和一个标准的符号表,产生的代码和数据能够放在多个区产生的代码和数据能够放在多个区产生的代码和数据能够
7、放在多个区产生的代码和数据能够放在多个区 (Section)(Section)中。中。中。中。3.1 GNU GCC简介简介lGCC组成-连接器连接器连接器连接器arm-elf-ldarm-elf-ld arm-elf-gcc是编译的前端程序,是编译的前端程序,是编译的前端程序,是编译的前端程序,arm-elf-ldarm-elf-ld根据根据根据根据链接定位文件链接定位文件链接定位文件链接定位文件LinkcmdsLinkcmds中的代码区、数据区、中的代码区、数据区、中的代码区、数据区、中的代码区、数据区、BSSBSS区和栈区等定位信息,将可重定位的目标模块链接区和栈区等定位信息,将可重定位
8、的目标模块链接区和栈区等定位信息,将可重定位的目标模块链接区和栈区等定位信息,将可重定位的目标模块链接成一个单一的、绝对定位的目标程序。成一个单一的、绝对定位的目标程序。成一个单一的、绝对定位的目标程序。成一个单一的、绝对定位的目标程序。3.1 GNU GCC简介简介lGCC组成-库管理器库管理器库管理器库管理器arm-elf-arm-elf-arar arm-elf-ar将多个可重定位的目将多个可重定位的目将多个可重定位的目将多个可重定位的目标模块归档为一个函数库文件。标模块归档为一个函数库文件。标模块归档为一个函数库文件。标模块归档为一个函数库文件。3.1 GNU GCC简介简介lGCC组
9、成-工程管理器工程管理器工程管理器工程管理器MAKEMAKE arm-elf-gcc MakeMake是用于自动编译、链接是用于自动编译、链接是用于自动编译、链接是用于自动编译、链接程序的实用工具程序的实用工具程序的实用工具程序的实用工具,使用使用使用使用makemake后就不需要手工的编后就不需要手工的编后就不需要手工的编后就不需要手工的编译每个程序文件。要使用译每个程序文件。要使用译每个程序文件。要使用译每个程序文件。要使用make,make,首先要编写首先要编写首先要编写首先要编写makefilemakefile。Makefile描述程序文件之间的依赖关系,描述程序文件之间的依赖关系,描
10、述程序文件之间的依赖关系,描述程序文件之间的依赖关系,并提供更新文件的命令。并提供更新文件的命令。并提供更新文件的命令。并提供更新文件的命令。3.1 GNU GCC简介简介lGCC组成-其他实用程序其他实用程序其他实用程序其他实用程序 arm-elf-objcopy目标文件格式转换工具等;目标文件格式转换工具等;目标文件格式转换工具等;目标文件格式转换工具等;3.1 GNU GCC简介简介lGCC编译程序的基本过程 arm-elf-gcc根据输入文件的后缀来确定文件的根据输入文件的后缀来确定文件的类型,然后根据用户的编译选项(包括优化选项、调试信类型,然后根据用户的编译选项(包括优化选项、调试
11、信息选项等)将其编译成相应的汇编临时文件(后缀为息选项等)将其编译成相应的汇编临时文件(后缀为.s););arm-elf-as将该汇编文件编译成目标文件(后将该汇编文件编译成目标文件(后缀为缀为.o););arm-elf-ld 根据用户的链接选项(包括指定链接根据用户的链接选项(包括指定链接命令文件等)将目标文件和各种库链接起来生成可执行文命令文件等)将目标文件和各种库链接起来生成可执行文件。件。程序的编译过程程序的编译过程C/C+源文件源文件Arm-elf-gcc头文件头文件汇编文件汇编文件Arm-elf-as目标文件目标文件源文件列表源文件列表生成库生成库连接命令文件连接命令文件可重定位模
12、块可重定位模块Arm-eif-ldArm-elf-ar用户库用户库库列表库列表可执行程序可执行程序 第第 3 章章 目录目录1 GNU GCC简介简介2 C/C+交叉编译器交叉编译器arm-elf-gcc3 交叉连接器交叉连接器arm-elf-ld 3.1 需求分析需求分析4 工程管理器工程管理器 MAKE5 交叉汇编器交叉汇编器 arm-elf-as6 汇编语言编程汇编语言编程7 简单程序设计简单程序设计8 混合语言编程混合语言编程l l概述概述3.2 C/C+交叉编译器交叉编译器arm-elf-gcc-命令格式 arm-elf-arm-elf-gccgcc options file opt
13、ions file在命令在命令在命令在命令arm-elf-arm-elf-gccgcc后面跟一个或多个选项,选项间后面跟一个或多个选项,选项间后面跟一个或多个选项,选项间后面跟一个或多个选项,选项间用空格隔开,然后跟一个或多个目标文件。用空格隔开,然后跟一个或多个目标文件。用空格隔开,然后跟一个或多个目标文件。用空格隔开,然后跟一个或多个目标文件。例如,例如,例如,例如,将将将将test.ctest.c 编译成目标文件编译成目标文件编译成目标文件编译成目标文件test.otest.o 并且生成调试信并且生成调试信并且生成调试信并且生成调试信息:息:息:息:arm-elf-arm-elf-gcc
14、gcc g c o g c o test.otest.o test.ctest.c l l概述概述3.2 C/C+交叉编译器交叉编译器arm-elf-gcc-命令选项列表-c-c 将输入的源文件编译成目标文件将输入的源文件编译成目标文件将输入的源文件编译成目标文件将输入的源文件编译成目标文件-S-S 将将将将C/C+C/C+文件生成汇编文件文件生成汇编文件文件生成汇编文件文件生成汇编文件-o file -o file 将输出内容存于文件将输出内容存于文件将输出内容存于文件将输出内容存于文件filefile-pipe -pipe 在编译的不同阶段之间采用管道通讯方式在编译的不同阶段之间采用管道通
15、讯方式在编译的不同阶段之间采用管道通讯方式在编译的不同阶段之间采用管道通讯方式-v-v 打印出编译过程中执行的命令打印出编译过程中执行的命令打印出编译过程中执行的命令打印出编译过程中执行的命令-x language-x language说明文件的输入类型为说明文件的输入类型为说明文件的输入类型为说明文件的输入类型为languagelanguage输出控制选项:输出控制选项:l l概述概述3.2 C/C+交叉编译器交叉编译器arm-elf-gcc-命令选项列表-ansiansi 支持所有支持所有支持所有支持所有ANSI CANSI C程序程序程序程序C语言选项:语言选项:l l概述概述3.2 C
16、/C+交叉编译器交叉编译器arm-elf-gcc-命令选项列表-w -w 关闭所有警告关闭所有警告关闭所有警告关闭所有警告-Wall -Wall 打开所有警告打开所有警告打开所有警告打开所有警告-WimplicitWimplicit 如果有隐含申明,显示警告信息如果有隐含申明,显示警告信息如果有隐含申明,显示警告信息如果有隐含申明,显示警告信息-WnoWno-implicit -implicit 不显示对隐含申明的警告不显示对隐含申明的警告不显示对隐含申明的警告不显示对隐含申明的警告警告选项:警告选项:l l概述概述3.2 C/C+交叉编译器交叉编译器arm-elf-gcc-命令选项列表-g
17、-g 在文件中产生调试信息在文件中产生调试信息在文件中产生调试信息在文件中产生调试信息(调试信息的文件格式有调试信息的文件格式有调试信息的文件格式有调试信息的文件格式有stabsstabs、COFFCOFF、XCOFFXCOFF、DWARF)DWARF)调试选项:调试选项:l l概述概述3.2 C/C+交叉编译器交叉编译器arm-elf-gcc-命令选项列表-O0 O0 不优化不优化不优化不优化-O1 -O1 一级优化一级优化一级优化一级优化-O2 -O2 二级优化二级优化二级优化二级优化-O3 -O3 三级优化三级优化三级优化三级优化优化选项:优化选项:l l概述概述3.2 C/C+交叉编译
18、器交叉编译器arm-elf-gcc-命令选项列表-E -E 运行运行运行运行C C的预处理器的预处理器的预处理器的预处理器-C -C 在运用在运用在运用在运用-E-E进行预处理时不去掉注释进行预处理时不去掉注释进行预处理时不去掉注释进行预处理时不去掉注释-D macro -D macro 定义宏定义宏定义宏定义宏macromacro为为为为1 1-D macro=-D macro=defndefn 定义宏定义宏定义宏定义宏macromacro为为为为defndefn预处理选项:预处理选项:l l概述概述3.2 C/C+交叉编译器交叉编译器arm-elf-gcc-命令选项列表-WaWa,opti
19、on option 将选项将选项将选项将选项optionoption传递传递传递传递 给汇编器给汇编器给汇编器给汇编器汇编选项:汇编选项:l l概述概述3.2 C/C+交叉编译器交叉编译器arm-elf-gcc-命令选项列表-I dir -I dir 设置搜索路径为设置搜索路径为设置搜索路径为设置搜索路径为dirdir-I-I-指定只对指定只对指定只对指定只对#include “file”,#include “file”,有效的头文件有效的头文件有效的头文件有效的头文件搜索目录搜索目录搜索目录搜索目录 搜索路径选项:搜索路径选项:l l概述概述3.2 C/C+交叉编译器交叉编译器arm-elf
20、-gcc-源文件类型的识别*.c.c CC源文件源文件源文件源文件*.i.i 经过预处理后的经过预处理后的经过预处理后的经过预处理后的C C源文件源文件源文件源文件*.h.h CC头文件头文件头文件头文件*.ii.ii 经过预处理后的经过预处理后的经过预处理后的经过预处理后的C+C+源文件源文件源文件源文件*.cc.cc C+C+源文件源文件源文件源文件*.cxxcxx C+C+源文件源文件源文件源文件*.cppcpp C+C+源文件源文件源文件源文件*.C.CC+C+源文件源文件源文件源文件*.s.s 不需要预处理的汇编文件不需要预处理的汇编文件不需要预处理的汇编文件不需要预处理的汇编文件*
21、.S.S需要预处理的汇编文件需要预处理的汇编文件需要预处理的汇编文件需要预处理的汇编文件arm-elf-arm-elf-gccgcc能够自动根据文件名后缀识别文件类型能够自动根据文件名后缀识别文件类型能够自动根据文件名后缀识别文件类型能够自动根据文件名后缀识别文件类型.l l命令使命令使用用3.2 C/C+交叉编译器交叉编译器arm-elf-gcc例如,例如,将将将将test.ctest.c编译成汇编程序并存放于文件编译成汇编程序并存放于文件编译成汇编程序并存放于文件编译成汇编程序并存放于文件test.txttest.txt:arm-elf-arm-elf-gccgcc S o S o tes
22、t.txttest.txt test.ctest.c -o file-o file将输出内容存于文件将输出内容存于文件将输出内容存于文件将输出内容存于文件filefile,仅适用于只有一个输出,仅适用于只有一个输出,仅适用于只有一个输出,仅适用于只有一个输出文件时。文件时。文件时。文件时。-输出文件名的指定l l命令使命令使用用3.2 C/C+交叉编译器交叉编译器arm-elf-gcc例如,例如,将将将将test.ctest.c编译成编译成编译成编译成test.otest.o:arm-elf-arm-elf-gccgcc c o c o test.otest.o test.ctest.c -c
23、-c将输入的源文件编译成目标文件。将输入的源文件编译成目标文件。将输入的源文件编译成目标文件。将输入的源文件编译成目标文件。-目标文件的生成l l命令使命令使用用3.2 C/C+交叉编译器交叉编译器arm-elf-gcc例如,例如,将将将将test.ctest.c编译生成汇编文件编译生成汇编文件编译生成汇编文件编译生成汇编文件test.stest.s:arm-elf-arm-elf-gccgcc S o S o test.stest.s test.ctest.c -S-S将将将将C/C+C/C+文件生成汇编文件。文件生成汇编文件。文件生成汇编文件。文件生成汇编文件。-将C/C+文件生成汇编文件
24、l l命令使命令使用用3.2 C/C+交叉编译器交叉编译器arm-elf-gcc例如,例如,对对对对test.ctest.c进行预处理并将结果输出到屏幕:进行预处理并将结果输出到屏幕:进行预处理并将结果输出到屏幕:进行预处理并将结果输出到屏幕:arm-elf-arm-elf-gccgcc E E test.ctest.c -E-E只对源文件进行预处理并且缺省输出到标准输出。只对源文件进行预处理并且缺省输出到标准输出。只对源文件进行预处理并且缺省输出到标准输出。只对源文件进行预处理并且缺省输出到标准输出。-预处理文件的生成l l命令使命令使用用3.2 C/C+交叉编译器交叉编译器arm-elf-
25、gcc头文件的头文件的头文件的头文件的引用引用引用引用有两种形式:有两种形式:有两种形式:有两种形式:一种是一种是一种是一种是#include“filenameinclude“filename”,一种是一种是一种是一种是#include#include。前一种形式的前一种形式的前一种形式的前一种形式的路径搜索顺序路径搜索顺序路径搜索顺序路径搜索顺序是:当前目录、指定是:当前目录、指定是:当前目录、指定是:当前目录、指定的搜索路径;后一种形式只搜索指定路径。的搜索路径;后一种形式只搜索指定路径。的搜索路径;后一种形式只搜索指定路径。的搜索路径;后一种形式只搜索指定路径。-I dir -I dir
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 s3c44B0X 嵌入式 uCLinux 系统 原理 应用
限制150内