gcc与gdb使用PPT课件
- 格式:ppt
- 大小:1.30 MB
- 文档页数:12
实验二GCC 及GDB的使用一、实验目的和要求a)掌握VI编译环境。
b)掌握GCC编译命令。
c)掌握多个文件共同编译方法。
d)掌握GDB调试命令。
二、实验内容和原理(可参照课件第五章)a)在VI编辑器里编写简单的“hello,world,I am 13050141XX XXX”,利用GCC编译为可执行文件,执行,观察运行结果。
b)在VI编辑器里编写多个文件(至少两个,其中一个为主程序,一个为需要调用的子程序),为其书写头文件,共同编译为可执行文件,执行,观察运行结果。
学习书写MAKEFILE文件,编译,执行,观察结果。
c)编写循环结构的程序,利用GCC 编译(加参数-g)为可执行文件,利用GDB调试,学习GDB调试命令。
三、实验环境a)硬件:PC机b)软件:LINUX操作系统、虚拟机四、实验步骤vi hello.c i:C语言编程Esc :wq gcc hello.c gdb file a.out run a实验三交叉编译环境配置一、实验目的和要求熟悉 Linux 开发环境,学会基于S3C2410 的Linux 开发环境的配置和使用。
使用Linux 的armv4l-unknown-linux-gcc 编译,使用基于NFS 方式的下载调试,了解嵌入式开发的基本过程。
二、实验内容a)配置网络,包括配置IP 地址、NFS 服务、防火墙。
b)安装交叉编译器c)配置超级终端,下载文件到目标机上。
三、实验设备及工具(包括软件调试工具)硬件:UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G 以上。
软件:REDHAT LINUX 9.0+超级终端+ARM-LINUX 开发环境四、实验步骤(所有的内容截图)1、虚拟机设置为桥接模式。
2、配置IP地址,设置为192.168.0.xxx参照实验指导书图1.4.1-1.4.3. 自己截图,说明3、关闭防火墙,参照实验指导书图1.4.4自己截图,说明4、打开桌面超级终端(HyperTerminal),配置COM1,115200波特率,8N1,实验箱插上电源线,网线与主机相连,串口线与主机串口1相连,开机,看bootloader程序VIVI是否自动加载,回车后进入命令提示符。
一. gcc编译器1.简介及功能GNU CC(简称为Gcc)是GNU项目中符合ANSIC 标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。
Gcc不仅功能强大,而且可以编译如C、C++、Object C、Java、Fortran、Pascal、Modula-3 和Ada 等多种语言,而且Gcc 又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。
2.Gcc 编译流程分为4个步骤:·预处理(Pre-Processing);·编译(Compiling);·汇编(Assembling);·链接(Linking)。
(1)预处理阶段在该阶段,编译器将头文件编译进来,并且用户可以使用Gcc的选项“-E”进行查看,该选项的作用是让Gcc 在预处理结束后停止编译过程。
(2)编译阶段Gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc 把代码翻译成汇编语言。
用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
(3)汇编阶段汇编阶段是把编译阶段生成的“.s”文件转成目标文件,在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了。
4)链接阶段在成功编译之后,就进入了链接阶段。
在这里涉及到一个重要的概念:函数库。
函数库一般分为静态库和动态库两种。
静态库是指编译链接时,把库文件的代码全部加入到可执行文件中。
其后缀名一般为“.a” 。
动态库与之相反,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。
动态库一般后缀名为“.so” 库。
Gcc在编译时默认使用动态库。
3格式及选项参数Gcc指令的一般格式为:Gcc [选项] 要编译的文件[选项] [目标文件](1). 总体选项3)优化选项Gcc可以对代码进行优化,它通过编译选项“-On”来控制优化代码的生成,其中n是一个代表优化级别的整数。
Gcc Gcc编译器编译器主讲人主讲人::李奎什么是什么是gcc gccGcc Gcc是一种编译工具是一种编译工具是一种编译工具。
它能够将高级语言它能够将高级语言((如c 语言)编写的文件编译生成操作系统可以执行的二进制工具Gcc Gcc工具的编译过程工具的编译过程•Gcc Gcc把源文件把源文件把源文件((.c .c文件文件文件))生成操作系统可执行的文件要经历四个过程要经历四个过程。
这个四个过程是预处理这个四个过程是预处理、、编译编译、、汇编汇编、、链接链接。
它们是按顺序执行的它们是按顺序执行的。
如下如所示如下如所示::预处理链接编译汇编源文件.C 可执行文件预处理器编译器汇编器连接器预处理阶段预处理器是在真正的翻译源文件开始之前由是在真正的翻译源文件开始之前由gcc gcc gcc编译编译器调用的独立程序器调用的独立程序。
预处理器可以删除注释预处理器可以删除注释、、包含其他文件以及进行宏替换其他文件以及进行宏替换。
编译阶段编译阶段的主要工作是把我们的源代码生成相应的汇编代码的过程汇编代码的过程。
这个阶段花费的时间会比较长这个阶段花费的时间会比较长。
它需要对我们的它需要对我们的C C 语言进行语法和语义的分析语言进行语法和语义的分析,,还需要优化我们的代码要优化我们的代码,,最终生成汇编代码最终生成汇编代码。
汇编阶段首先我们应该知道汇编代码首先我们应该知道汇编代码((汇编指令汇编指令))并不是机器能够执行的语言器能够执行的语言。
我们还必须把汇编语言翻译成计算机能识别的机器语言计算机能识别的机器语言,,这个翻译的过程是在汇编阶段完成的编阶段完成的。
链接阶段链接阶段是通过链接器完成的链接阶段是通过链接器完成的。
链接器是一个独立的程序的程序,,它将一个或者多个由编译器或汇编器生成的目标文件外加库链接为一个可执行的文件的目标文件外加库链接为一个可执行的文件。
•一般来说一般来说,,系统安装后就已经安装和设定好了系统安装后就已经安装和设定好了gcc gcc gcc。
***************gdb介绍*********************GNU 的调试器称为gdb,该程序是一个交互式工具,工作在字符模式。
在X Window 系统中,有一个gdb 的前端图形工具,称为xxgdb。
gdb 是功能强大的调试程序,可完成如下的调试任务:* 设置断点;* 监视程序变量的值;* 程序的单步执行;* 修改变量的值。
在可以使用gdb 调试程序之前,必须使用-g 选项编译源文件。
可在makefile 中如下定义CFLAGS 变量:CFLAGS = -g运行gdb 调试程序时通常使用如下的命令:gdb progname在gdb 提示符处键入help,将列出命令的分类,主要的分类有:* aliases:命令别名* breakpoints:断点定义;* data:数据查看;* files:指定并查看文件;* internals:维护命令;* running:程序执行;* stack:调用栈查看;* statu:状态查看;* tracepoints:跟踪程序执行。
键入help 后跟命令的分类名,可获得该类命令的详细清单。
*********gdb 的常用命令***************命令解释break NUM 在指定的行上设置断点。
bt 显示所有的调用栈帧。
该命令可用来显示函数的调用顺序。
clear 删除设置在特定源文件、特定行上的断点。
其用法为:clear FILENAME:NUM。
continue 继续执行正在调试的程序。
该命令用在程序由于处理信号或断点而导致停止运行时。
display EXPR 每次程序停止后显示表达式的值。
表达式由程序定义的变量组成。
file FILE 装载指定的可执行文件进行调试。
help NAME 显示指定命令的帮助信息。
info break 显示当前断点清单,包括到达断点处的次数等。
info files 显示被调试文件的详细信息。
info func 显示所有的函数名称。