linux操作系统第6次gcc及gdb的使用.pptx
文本预览下载声明
gcc及gdb使用Linux下C编程概述C语言具备如下特点:(1)把高级语言的基本结构和语句与低级语言的实用性结合起来,可以像汇编语言一样对位、字节和地址进行操作,更接近于硬件设备,因此执行效率很高;(2)具有强大的图形处理功能(3)具有多种数据类型,并引入指针概念,使程序效率更高;(4)是结构化的语言,采用代码及数据分隔,使程序的各个部分除必要的信息交流外彼此独立,层次清晰,便于使用、维护以及调试;(5)可移植性强,适合诸如DOS、Windows和Linux等多种操作系统及体系结构,尤其适合在嵌入式领域的开发。程序执行一般过程编译过程描述gcc编译工具参数作用-E只运行C预编译器,配合-o可指定得到预处理过的.i文件-S配合-o将预处理输出文件.i文件汇编成扩展名为.s的汇编语言源代码文件-c只编译并生成后缀名为.o的目标文件,不连接成为可执行文件-o 指定可执行文件的名称,如果不加该参数,可执行文件默认名为a.out-g产生调试工具Gdb所必要的符号信息,要调试程序,必须加入该选项-O编译、链接时优化,产生效率更高的可执行文件,编译链接速度相应减慢-O2比-O效果更好的优化选项,同时对应的编译链接速度会更慢-l将该参数后跟的目录加入到程序头文件列表中-L首先到该参数后跟的目录中寻找所需要的库文件-w不生成任何警告信息-Wall生成所有警告信息-MM自动生成源文件和目标文件的依赖关系gcc使用方法简介gcc [参数...] [文件名...]gcc编译工具程序实例:#includestdio.hint main(){printf(hello world!\n);return 0;}[jacky@bogon c]$ gcc helloworld.c [jacky@bogon c]$ lsa.out helloworld.cgcc编译工具执行a.out时需要在其前面加上“./”才可正确执行,原因是可执行文件所在的目录没有包含在环境变量PATH的值中[jacky@bogon c]$ export PATH=$PATH:.[jacky@bogon c]$ a.outhello world如果需要修改可执行文件的名字,可以使用-o参数直接指定[jacky@bogon c]$ gcc helloworld.c –o helloworld[jacky@bogon c]$ lsa.out helloworld helloworld.cGcc编译流程Gcc编译流程预处理阶段可以使用-E参数来进行预处理并终止编译,得到扩展名为.i的预处理文件,然后使用cat命令查看文件内容。[jacky@bogon c]$ gcc –E helloworld.c –o helloworld.i[jacky@bogon c]$ cat helloworld.i使用-S参数来查看编译阶段的执行效果[jacky@bogon c]$ gcc –S helloworld.i –o helloworld.s[jacky@bogon c]$ cat helloworld.s汇编过程是处理汇编语言的阶段,主要调用汇编处理程序完成将汇编语言汇编成二进制机器代码的过程,该过程将扩展名为.s 的汇编语言代码文件汇编为扩展名为.o的目标文件。所生成的目标文件作为下一步链接过程的输入文件。[jacky@bogon c]$ gcc –c helloworld.s –o helloworld.o链接阶段[jacky@bogon c]$ gcc helloworld.o –o helloworldgdb用法详解命令作用file后跟需要载入调试的可执行文件名称kill 终止正在调试的程序list 列出产生执行文件的源代码的一部分next 执行一行源代码但不进入函数内部step 执行一行源代码而且进入函数内部run 执行当前被调试的程序continue继续执行quit 终止 gdbwatch 使你能监视一个变量的值而不管它何时被改变print 显示表达式的值break 在代码里设置断点, 这将使程序执行到这里时被挂起make 不退出 gdb 就可以重新产生可执行文件shell 不离开 gdb 就执行 shell 命令gdb命令及对应作用表Make工程管理器多个c语言源程序,可以使用Make工程管理器来提高效率,只需要编写makefile文件制定相应的编译和链接规则,然后在终端执行make命令就可以高效方便的完成最后的编译工作,且如果以后修改个别文件时,make会自动检查出哪些文件被修改过,从而只对这些文件再次进行编译,保证最终的可执行文件是由最新的模块构建的。Make工程管理器工程管理相关语法makefile文件中语句通常遵循格式如下:目标(target):依赖文件 (dependency_fi
显示全部