如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第1章嵌入式linux编程基础(工具篇)GNUC/C++编译器 GCC是一个编一套件,它能编译C,C++,Objective-C,Fortran,Pascal等。gcc-3.2.2inLinux9.0. Gcc+make+gdb=VisualC++(notquite) make是一个项目管理器, gdb:程序调试器, Vi:文本编辑器1.1.使用GNUcc开发应用程序1.1.2gcc的版本信息 一般来说,系统安装后就已经安装和设定好了gcc。在shell的提示符下键入gccv,屏幕上就会显示出目前正在使用的gcc的版本,同时这可以确定系统所支持的是ELF还是a.out可执行文件格式。 Linux系统中可执行文件有两种格式。第一种格式是a.out格式,这种格式用于早期的Linux系统以及Unix系统的原始格式。a.out来自于UnixC编译程序默认的可执行文件名。当使用共享库时,a.out格式就会发生问题。把a.out格式调整为共享库是一种非常复杂的操作,由于这个原因,一种新的文件格式被引入Unix系统5的第四版本和Solaris系统中。它被称为可执行和连接的格式(ELF)。这种格式很容易实现共享库。ELF格式已经被Linux系统作为标准的格式采用。gcc编译程序产生的所有的二进制文件都是ELF格式的文件(即使可执行文件的默认名仍然是a.out)。较旧的a.out格式的程序仍然可以运行在支持ELF格式的系统上。 1.1.3gcc的使用-c:只是编译不链接,生成目标文件“.o” -S:只是编译不汇编,生成汇编代码 -E:只是进行预编译,不作其他处理 -g:在可执行程序中包含标准调试信息 -ofile:把输出文件输出到file里 -V:打印编译器内部编译各过程的命令行信息和编译器的版本 -Idir:在头文件的索引路径列表中添加dir目录 -Ldir:在库文件的搜索路径列表中添加dir目录 -static:链接静态库 -llibrary:链接名为library的库文件 1.1.4使用优化选项1.1.5使用调试和剖析选项Howtocompilegcc编译选项Gcc编译过程中的文件类型ExamplesMoreoptions-I,-L,-l1.2调试工具GDBgdb的功能非常强大,到目前为止,gdb已能够支持Moduls-2、Chill、Pascal和FORTRAN程序的调试,但是调试这些语言的源程序时有一些功能还不能使用。例如调试FORTRAN程序时还不支持表达式的输入、输出变量或类FORTRAN的词法。 gdb程序调试的对象是可执行文件,而不是程序的源代码文件。然而,并不是所有的可执行文件都可以用gdb调试。如果要让产生的可执行文件可以用来调试,需在执行gcc指令编译程序时,加上-g参数,指定程序在编译时包含调试信息。调试信息包含程序里的每个变量的类型和在可执行文件里的地址映射以及源代码的行号。gdb利用这些信息使源代码和机器码相关联。gdb(GNUDebugger)1.2.1GDB命令的基本使用和应用1)file命令:装入想要调试的可执行文件。 2)cd命令:改变工作目录。 3)pwd命令:返回当前工作日录。 4)run命令:执行当前被调试的程序。 5)kill命令:停止正在调试的应用程序。 6)list命令:列出正在调试的应用程序的源代码。 7)break命令:设置断点。 8)Tbreak命令;设置临时断点。它的语法与break相同。区别在于用tbreak设置的断点执行一次之后立即消失。 9)watch命令:设置监视点,监视表达式的变化。 10)awatch命令:设置读写监视点。当要监视的表达式被读或写时将应用程序挂起。它的语法与watch命令相同。 11)rwatch命令:设置读监视点,当监视表达式被读时将程序挂起,等侍调试。此命令的语法与watch相同。 12)next命令:执行下一条源代码,但是不进入函数内部。也就是说,将一条函数调用作为一条语句执行。执行这个命令的前提是已经run,开始了代码的执行。 13)step命令:执行下一条源代码,进入函数内部。如果调用了某个函数,会跳到函数所在的代码中等候一步步执行。执行这个命令的前提是已经用run开始执行代码。 14)display命令:在应用程序每次停止运行时显示表达式的值。 15)infobreak命令:显示当前断点列表,包括每个断点到达的次数。 16)infofiles命令:显示调试文件的信息。 17)infofunc命令:显示所有的函数名。 18)infolocal命令:显示当前函数的所有局部变量的信息。19)infoprog命令:显示调试程序的执行状态。 20)print命令;显示表达式的值。 21)delete命令:删除断点。指定一个断点号码,则删除指定断点。不指定参
as****16
实名认证
内容提供者
最近下载