




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Linux 操作系统,2010-02,2,本章目录,第六节 GCC编译器及Make工具 6.1、GCC 简介 6.2、GCC编译过程 6.3、GCC参数 6.4、GDB调试工具 6.5、make工具及使用,2010-02,3,目标,了解GCC编译器的升级及安装 掌握GCC编译器编译过程 掌握GCC编译器编译选项 掌握GDB调试器调试命令 掌握Make工具用法 掌握Makefile文件编写规则,2010-02,4,6.1、 GCC简介 GCC是GNU项目中的一个子项目,GCC能编译C、C+Object C和Java等多种语言,而且还可执行跨平台的交叉编译工作,比如用于ARM处理器的ARM-LIN
2、UX-GCC。 安装或更新GCC可在GNU项目的官方网站()下载安装包。参考资料linux上的C编程,2010-02,5,6.2 GCC编译过程 编译过程一般可以分为下面四个阶段,预处理、编译、汇编、链接。每个阶段分别调用不同的工具进行处理,见下图:,源代码.C,预处理,cpp程序,Gcc调用,编译,汇编,链接,ccl程序,Gcc调用,as程序,Gcc调用,ld程序,Gcc调用,库,可执行文件,2010-02,6,6.3 GCC参数 GCC可以通过选项对程序的生成进行全面控制。 GCC参数: -o file 编译生成可执行文件file -c 仅对文件进行编译,不链接,生成
3、目标文件.o -g 在可执行文件中添加调试信息,供GDB调试 -E 只进行预编译 -l 在链接时链接指定库文件 -I 增加头文件目录,并优先于默认头文件目录 -v 显示GCC版本信息 Hello.c Gcc g c hello.c hello.o Gcc g o hello lmylib.a Ihello.h hello.c,2010-02,7,实例1:创建一个文件 #include int main(int argc,char *argv) FILE *fp; if(argc2) fp=fopen(argv1,”w”); fclose(fp); return 0; ,2010-02,8,保存
4、文件名为createfile.c 生成可执行文件 gcc o create createfile.c 执行文件create创建文件test.txt ./create test.txt 实例2: 按照模块化设计思想,设计程序进行2个数的加、减、乘、除,逻辑或、逻辑与、逻辑非。 提示:创建main.c进行主逻辑关系,math.c,math.h创建数学计算函数 例如:计算2和3的和:./math a 2 3,a表示add 计算2和3的差:math s 2 3,2010-02,9,程序设计 math.h int add(int a,int b); int sub(int a,int b); long
5、mul(int a,int b); int div(int a,int b); math.c int add(int a,int b) Return a+b; ,2010-02,10,int sub(int a,int b) Return a-b; long mul(int a,int b) Return a*b; int div(int a,int b) Return a/b; ,2010-02,11,main.c #include #include “math.h” int main(int argc,char *argv) int date1=0; int date2=0; if(arg
6、c4) printf(“usage:n”); printf(“命令 选项 操作数1 操作数2n”); return 0; date1=atio(argv2); date2=atio(argv3);,2010-02,12,if(!strcmp(argv1,”-a) printf(“%d+%d=%dn”,date1,date2,add(date1,date2); if(!strcmp(argv1,”-s) printf(“%d-%d=%dn”,date1,date2,sub(date1,date2); . Gcc o math main.c math.c math.h,2010-02,13,6.4
7、 GDB调试工具 Gdb math 常用GDB命令及解释 List 列出可执行代码 Break 设置断点 Run 运行程序,遇到断点停止 Next 单步运行程序 Step 进入函数内部,查看函数内部代码执行 Delete 删除断点 Continue 从断点处继续执行 Kill 终止正在调试的程序 Print 显示变量的内容 Quit 推出GDB,2010-02,14,6.5 Make 工具及使用 当一个软件被划分为很多子系统,子系统又被划分为几个独立的模块,他们之间就会产生协调问题。例如一个模块修改了,怎样才能保证其他模块与之相关的部分也随之改变,make工具就是为了保证每次重新编译时都是最新
8、源代码。Make工具是一种工程管理软件,由其调用Makefile文件对工程进行管理,上层Makefile调用下层Makefile构成链表,对整个软件进行管理。,2010-02,15,Makefile语法格式 目标:依赖项列表 【命令】 以上面程序为例: 目标: create 依赖:createfile.c 命令: Gcc o cteate create.c Makefile create:create.c gcc o create cteate.c,2010-02,16,Makefile 中的变量 自定义变量 Makefile 的变量使用一个字符串定义的 变量名=字符串 变量的使用: $(变量
9、名) 默认变量 AR 归档维护程序的名称 CC arm-linux-gcc,2010-02,17,自动化变量 $ 代表规则中的目标文件名 $ 规则的第一个依赖文件名 $? 所有比目标文件更新的依赖文件列表 $ 规则的所有依赖文件列表,使用空格分隔 $* 不包含扩展名的目标文件名称 $+ 类似“$”,但是它保留了依赖文件中重复出现的文件。主要用在程序链接时,库的交叉引用场合,2010-02,18,伪目标 伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时我们也可以将一个伪目标称为标签。指定具体的目标来执一些特定的命令。像下边那样: c
10、lean: rm rf *.o 规则中“rm”不是创建文件“clean”的命令,只是删除当前目录下的所有.o文件。在工作目录下不存在“clean”这个文件时,我们输入“make clean”后,“rm *.o”总会被执行。 同样,由于没有任何其他规则依赖伪目标,因此在执行make时这条规则不会不执行,2010-02,19,条件语句 Ifeqelseendif 例如: ifeq ($(ARCH),arm) CROSS_COMPILE = arm-linux- endif,2010-02,20,实例2makefile编写: math:main.o math.o gcc o math main.o math.o main.o :main.c gcc c main.c math.o: math.h math.c gcc c math.c clean: r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC 24741:2024 EN Information technology - Biometrics - Overview and application
- 【正版授权】 ISO 24322:2024 EN Timber structures - Methods of test for evaluation of long-term performance - Part 1: Wood-based products in bending
- 【正版授权】 ISO 5284:2025 EN Conveyor belts - List of equivalent terms
- 【正版授权】 ISO 22915-1:2024 EN Industrial trucks - Verification of stability - Part 1: General
- 2025年度高新技术产业园区运营承包经营合同
- 生物技术课程导入计划
- 各行各业主管的共性与差异计划
- 校外美术实践基地建设计划
- 老年医学科医生工作计划
- 2025年灌装机系列设备合作协议书
- 《新时代大学生劳动教育》全套教学课件
- 2024简易租房合同下载打印
- 公司与个人的技术服务合同书范本
- 数字出版概论 课件 第八章 数字出版产品开发与分析
- 高职建筑设计专业《建筑构造与识图》说课课件
- 码头工程施工组织设计
- TBSES 001-2024 建设项目环境影响后评价技术指南 污染影响类
- 北师大版数学三年级下册《分橘子》说课稿及反思(共二篇)
- 新能源汽车:电动压缩机技术简介
- 2024年医美项目立项申请报告范文
- 《管理学基础(第2版)》高职全套教学课件
评论
0/150
提交评论