第4章程序开发和调试讲述.ppt

  1. 1、本文档共65页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章程序开发和调试讲述

第4章 程序开发和调试 主要内容 vivim gcc make makefile gdb CVS RCS 开发工具 File Name Suffix GCC简介 名称: GNU project C and C++ Compiler 管理与维护 GNU项目 对C/C++编译的控制 – 预处理(Preprocessing) – 编译(Compilation) – 汇编(Assembly) – 链接(Linking ) 基本使用格式 $ gcc [ 选项] 文件名 常用的gcc编译命令选项 假设源程序文件名为test.c。 1. 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。 文件。这里未指定输出文件,默认输出为a.out 2. 选项 -o 用法:#gcc test.c -o test 作用:将test.c预处理、汇编、编译并链接形成可执行文件 test。-o选项用来指定输出文件的文件 常用的gcc编译命令选项 3. 选项 -c 用法:#gcc -c test.s 作用:将汇编输出文件test.s编译输出test.o文件 4. 选项-O[0、1、2、3] 用法:#gcc -O1 test.c -o test 作用:使用编译优化级别1编译程序。级别 别越大优化效果越好,但编译时间越长。缺省的情况为2级优化,0为不进行优化 5. 选项-g 用法:#gcc -g test.c -o test 作用:在可执行文件中加入调试信息,方便用gdb进行程序的调试。 gcc 其他选项 -Idir: 指定额外的头文件搜索路径 -Ldir: 指定额外的库文件搜索路径 -lname: 链接时搜索指定的库文件 -DMACRO[=DEFN]: 定义MACRO宏,相当于C语言中的#define MACRO=DEFN -x language filename :设定文件所使用的语言,使后缀名无效 -ansi :只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色,例如 asm 或 typeof 关键词。 示例源程序 示例源程序—hello.c #include stdio.h int main(void) { printf(hello gcc!\r\n); return 0; } 生成预处理文件 命令 $gcc –E hello.c –o hello.i 生成汇编文件 命令 $gcc –S hello.c –o hello.s 生成二进制文件 生成目标文件 $gcc –c hello.c –o hello.o 生成可执行文件 $gcc hello.c –o hello 运行程序 $./hello hello gcc! 编译多个文件 文件清单 编译多个文件 编译多个文件 Libraries Files 库是一组预先编译好的函数的集合。标准的库文件一般存储在/lib和/usr/lib目录中。库文件的命名总是以lib开头,如libm.a 函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。 Libraries Files Static Libraries (.a files) gcc -c + ar crv 如 ar crv libfoo.a bill.o fred.o Dynamic Libraries/Shared Objects (.so files) 共享代码 gcc –shared -fPCI 该选项指定生成动态连接库 如gcc -shared -fPCI -o libmyhello.so hello.o 查看一个可执行程序依赖哪些库 $ldd program 多个源文件带来的问题 /* main.c */ #include “a.h” ... /* 2.c */ #include “a.h” #include “b.h” ... /* 3.c */ #include “b.h” #include “c.h” make makefile Multi-file project IDE make make makefile makefile描述模块间的依赖关系; 大多数IDE都有这个命令,例如:Delphi的make Visual C++的nmake,Linux下GNU的make make命令根据makefile对程序进行管理和维护;make判断被维护文件的时序关系 make命令的选项和参数 make [-

文档评论(0)

441113422 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档