Linux 程序开发与调试.pptVIP

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux 程序开发与调试

第4章 程序开发和调试 主要内容 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 [-f fil

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档