Linux下GCC程序开发环境.ppt
Linux 系统C语言程序设计,教 师:胡 青,第二章 Linux系统下GCC编程开发环境,二一二年九月,目 录,Linux系统下GCC概述,1,2,利用GCC编译第一个程序,3,GCC编译多个组合程序,5,GCC下程序调试,6,集成化开发环境geany,4,GCC下make管理程序,Linux系统下GCC概述,1、概述(1)GCC 安装验证Ubuntu 系统安装后 GCC通常并不是默认安装,此种情况下可以通过编写简单程序进行测试,如:#include Int main(void)printf(“hello First Linux Programmer!/n”);return 0;,Linux系统下GCC概述,1、概述(1)GCC 安装验证存储文件hello.c;打开terminal终端,输入指令:gcc hello.c o hello如果没有错误返回则证明GCC已经安装,否则需要进行手动安装。也可以直接用指令检测:$:gcc version输出根据版本不同而不同。,Linux系统下GCC概述,1、概述(2)GCC 安装1)确认网络正常连接;2)在终端界面中输入指令:sudo apt-get install build-enssential或sudo apt-get install gcc3)中间需要输入两次或一次:Y后就会自动安装。4)安装完毕用验证指令进行验证即可。,Linux系统下GCC概述,1、概述(3)GCC 编译处理流程,目 录,Linux系统下GCC概述,1,2,利用GCC编译第一个程序,3,GCC编译多个组合程序,5,GCC下程序调试,6,集成化开发环境geany,4,GCC下make管理程序,利用GCC编译第一个程序,1、建立第一个程序利用文本文件,编写第一个大家好程序如下:#include Int main(void)printf(“hello 大家好!n”);return 0;程序名称存为”hello.c”,Linux系统下GCC概述,2、GCC 常用编译指令1)无选项编译链接用法:$gcchello.c作用:将hello.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。2)选项-o用法:$gcchello.c-ohello作用:将hello.c预处理、汇编、编译并链接形成可执行文件hello(可自定义名称)。-o选项用来指定输出文件的文件名。3.选项-E(大写)用法:$gcc-Ehello.c-ohello.i作用:将hello.c预处理输出hello.i文件。,Linux系统下GCC概述,2、GCC 常用编译指令4)选项-S(大写)用法:$gcc-Shello.i作用:将预处理输出文件hello.i汇编成hello.s文件。5)选项-c用法:$gcc-chello.s作用:将汇编输出文件hello.s编译输出hello.o文件。6)无选项链接用法:$gcchello.o-ohello作用:将编译输出文件hello.o链接成最终可执行文件hello。,Linux系统下GCC概述,2、GCC 常用编译指令7)选项-O(大写)用法:$gcc-O1hello.c-ohello作用:使用编译优化级别1编译程序。级别为13,级别越大优化效果越好,但编译时间越长。8)选项-Wall用法:$gcc Wall hello.c o hello1作用:能够显示所有的警告信息,以便于修改调试。,目 录,Linux系统下GCC概述,1,2,利用GCC编译第一个程序,3,GCC编译多个组合程序,5,GCC下程序调试,6,集成化开发环境geany,4,GCC下make管理程序,GCC编译多个组合程序,1、编写多组合文件代码1)声明头文件:Mhello.h/*hello输出 主函数声明*/int helloOut(void);2)编写函数主题文件:Mhello.c/*hello输出 主函数原型函数*/#include int helloOut(void)printf(hello,大家好!n);return 0;,GCC编译多个组合程序,1、编写多组合文件代码3)编写主函数:helloTest.c/*主函数调用hello输出*/#include Mhello.hint main(void)return helloOut();,GCC编译多个组合程序,2、编译测试1)直接编译指令:$gcc helloTest.c Mhello.c o helloTest2)分别编译后再进行链接$gcc-cMhello.c/将Mhello.c编译成Mhello.o#gcc-chelloTest.c/将helloTest.c编译成helloTest.o#gcc-oMhello.ohelloTest.o-ohelloTest/将Mhello.o和helloTest.o链接成helloTest,目 录,Linux系统下GCC概述,1,2,利用GCC编译第一个程序,3,GCC编译多个组合程序,5,GCC下程序调试,6,集成化开发环境geany,4,GCC下make管理程序,GCC下make管理程序,1、make作用1)复杂程序项目,手工编译很难处理,如上千个文件的系统,必须通过一种工具进行管理。2)make命令就是起这一作用的。3)make命令执行后,根据makefile文件指令进行自动编译。4)make命令能够自动判断更新文件进行编译,而不处理没有修改过的文件。5)重点是makefile文件的编写十分重要。,GCC下make管理程序,2、makefile编写规则1)makefile中可以有多种规则,每条可规则告诉make编译那些文件、怎样编译以及在什么条件下编译。2)每条规则需包含如下内容:一个“目标体”(target),即make最终要创建的东西。包含一个或多个“依赖体”(dependency)的列表,依赖体通常是编译目标体需要的其他文件。为了从指定的依赖体所需执行的“命令”(command)的列表。,GCC下make管理程序,2、makefile编写规则3)每条规则通用形式如下:target:dependency1 dependency2 commandcommand4)Makefile中只认制表符(tab键缩进),不识空格。5)没有依赖体的可以作为make的“伪目标”6)在make文件中也可以定义变量和宏等。,GCC下make管理程序,3、makefile编写示例生成makefile文件如下:1)helloTest:helloTest.o Mhello.o Mhello.hgcc helloTest.o Mhello.o-o helloTest2)Mhello.o:Mhello.c Mhello.hgcc-c Mhello.c3)helloTest.o:helloTest.cgcc-c helloTest.c4)hello:hello.cgcc hello.c-o hello5)all:helloTest hello6)clean:rm helloTest hello*.o,目 录,Linux系统下GCC概述,1,2,利用GCC编译第一个程序,3,GCC编译多个组合程序,5,GCC下程序调试,6,集成化开发环境geany,4,GCC下make管理程序,GCC下程序调试,1、gbd命令介绍gbd命令集在Linux下是与make指令系统并列的gcc下调试工具指令。全称为“GNU bug debuger”具有全系列调试程序的各种指令和方法。gbd安装:sudo apt-get install gdb2、常用gbd命令 1)backtrace 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where)2)breakpoint 在程序中设置一个断点 3)cd 改变当前工作目录 4)clear 删除刚才停止处的断点 5)commands 命中断点时,列出将要执行的命令 6)continue 从断点开始继续执行,GCC下程序调试,2、常用gbd命令 7)delete 删除一个断点或监测点;也可与其他命令一起使用 8)display 程序停止时显示变量和表达时 9)down 下移栈帧,使得另一个函数成为当前函数 10)frame 选择下一条continue命令的帧 11)info 显示与该程序有关的各种信息 12)jump 在源程序中的另一点开始运行 13)kill 异常终止在gdb 控制下运行的程序 14)list 列出相应于正在执行的程序的原文件内容 15)next 执行下一个源程序行,从而执行其整体中的一个函数,GCC下程序调试,2、常用gbd命令 16)print 显示变量或表达式的值 17)pwd 显示当前工作目录 18)pype 显示一个数据结构(如一个结构或C+类)的内容 19)quit 退出gdb 20)reverse-search 在源文件中反向搜索正规表达式 21)run 执行该程序 22)search 在源文件中搜索正规表达式,GCC下程序调试,2、常用gbd命令 23)set variable 给变量赋值 24)signal 将一个信号发送到正在运行的进程 25)step 执行下一个源程序行,必要时进入下一个函数 26)undisplay display命令的反命令,不要显示表达式 27)until 结束当前循环 28)up 上移栈帧,使另一函数成为当前函数 29)watch 在程序中设置一个监测点(即数据断点)30)whatis 显示变量或函数类型,目 录,Linux系统下GCC概述,1,2,利用GCC编译第一个程序,3,GCC编译多个组合程序,5,GCC下程序调试,6,集成化开发环境geany,4,GCC下make管理程序,集成化开发环境geany,1、geany概述Geany是一个使用 GTK2 工具包开发的快速和轻巧的集成开发环境(IDE),包括以下基本功能:语法高亮显示,代码折叠,代码自动补完,自动补完经常使用的结构(如:if、for、while 等),自动补完 XML 和 HTML 标记(tag),调用提示,支持 C、C+、Java、PHP、HTML、Python、Perl、Pascal 等语言,符号列表等等。支持各种编译指令,以gtk开发包为基础。,集成化开发环境geany,2、geany安装1)直接在软件中心安装,简单。2)运行sudo apt-get install geany指令3)纯Linux下安装需要如下过程:下载安装包:gitclone git:/geany/geany-plugins.git geany-plugins./waf configure,期间会告诉各种开发包的缺少情况,需要手动安装。./waf build p k./waf install,集成化开发环境geany,3、geany界面,本课结束,谢谢!,胡青:,