linux下gcc程序开发环境

上传人:tian****1990 文档编号:75934445 上传时间:2019-02-02 格式:PPT 页数:30 大小:1.19MB
返回 下载 相关 举报
linux下gcc程序开发环境_第1页
第1页 / 共30页
linux下gcc程序开发环境_第2页
第2页 / 共30页
linux下gcc程序开发环境_第3页
第3页 / 共30页
linux下gcc程序开发环境_第4页
第4页 / 共30页
linux下gcc程序开发环境_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《linux下gcc程序开发环境》由会员分享,可在线阅读,更多相关《linux下gcc程序开发环境(30页珍藏版)》请在金锄头文库上搜索。

1、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

2、; ,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 gcc 3)中间需要输入两次或一次:Y后就会自动安装。

3、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)无选项编译链接 用法:

4、$ gcc hello.c 作用:将hello.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。 2) 选项 -o 用法:$ gcc hello.c -o hello 作用:将hello.c预处理、汇编、编译并链接形成可执行文件hello(可自定义名称)。-o选项用来指定输出文件的文件名。 3. 选项 -E (大写) 用法:$ gcc -E hello.c -o hello.i 作用:将hello.c预处理输出hello.i文件。,Linux系统下GCC概述,2、GCC 常用编译指令 4) 选项 -S(大写) 用法:$ gcc -S hello.i 作用:将

5、预处理输出文件hello.i汇编成hello.s文件。 5) 选项 -c 用法:$ gcc -c hello.s 作用:将汇编输出文件hello.s编译输出hello.o文件。 6) 无选项链接 用法:$ gcc hello.o -o hello 作用:将编译输出文件hello.o链接成最终可执行文件hello。,Linux系统下GCC概述,2、GCC 常用编译指令 7)选项-O(大写) 用法:$ gcc -O1 hello.c -o hello 作用:使用编译优化级别1编译程序。级别为13,级别越大优化效果越好,但编译时间越长。 8)选项-Wall 用法:$ gcc Wall hello.c

6、 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“); retur

7、n 0; ,GCC编译多个组合程序,1、编写多组合文件代码 3)编写主函数:helloTest.c /*主函数调用hello输出*/ #include “Mhello.h“ int main(void) return helloOut(); ,GCC编译多个组合程序,2、编译测试 1)直接编译指令: $ gcc helloTest.c Mhello.c o helloTest 2) 分别编译后再进行链接 $ gcc -c Mhello.c /将Mhello.c编译成Mhello.o #gcc -c helloTest.c /将helloTest.c编译成helloTest.o #gcc -o

8、Mhello.o helloTest.o -o helloTest /将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命令能够自动判断更新文件进行编译,而不

9、处理没有修改过的文件。 5)重点是makefile文件的编写十分重要。,GCC下make管理程序,2、makefile编写规则 1)makefile中可以有多种规则,每条可规则告诉make编译那些文件、怎样编译以及在什么条件下编译。 2)每条规则需包含如下内容: 一个“目标体”(target),即make最终要创建的东西。 包含一个或多个“依赖体”(dependency)的列表,依赖体通常是编译目标体需要的其他文件。 为了从指定的依赖体所需执行的“命令”(command)的列表。,GCC下make管理程序,2、makefile编写规则 3)每条规则通用形式如下: target:dependen

10、cy1 dependency2 command command 4) Makefile中只认制表符(tab键缩进),不识空格。 5)没有依赖体的可以作为make的“伪目标” 6)在make文件中也可以定义变量和宏等。,GCC下make管理程序,3、makefile编写示例 生成makefile文件如下: 1)helloTest:helloTest.o Mhello.o Mhello.h gcc helloTest.o Mhello.o -o helloTest 2)Mhello.o:Mhello.c Mhello.h gcc -c Mhello.c 3)helloTest.o:helloTes

11、t.c gcc -c helloTest.c 4)hello:hello.c gcc hello.c -o hello 5)all:helloTest hello 6)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” 具有全系列调试程序的各种指令和方法。

12、gbd安装:sudo apt-get install gdb 2、常用gbd命令 1)backtrace 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where) 2)breakpoint 在程序中设置一个断点 3)cd 改变当前工作目录 4)clear 删除刚才停止处的断点 5)commands 命中断点时,列出将要执行的命令 6)continue 从断点开始继续执行,GCC下程序调试,2、常用gbd命令 7) delete 删除一个断点或监测点;也可与其他命令一起使用 8) display 程序停止时显示变量和表达时 9) down 下移栈帧,使得另一个函数成为当前函数 1

13、0) 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 在源文件中反向搜索正规表达式 2

14、1) 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,

15、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界面,本课结束,谢谢!,胡青:13387889389,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号