《Linux程序设计》——开发工具
来源:互联网 发布:淘宝店设置低于7折 编辑:程序博客网 时间:2024/05/16 16:03
一、多个源文件带来的问题
1、对大型文件来说,编辑—编译—测试这一循环的周期将变长。如果仅改动了一个源文件,其他与之相关的都要从新编译。
二、make命令和makefile
1、makefile的语法
1)、makefile文件由一组依赖关系和规则组成。
2)、make命令会会根据makefile文件来确定目标文件的创建顺序以及正确的规则调用顺序。
2、make命令的选项和参数
1)、make程序选项
I、-k:让make命令在发现错误时任然继续执行,而不是在检测到第一个错误时就停下来。
II、-n:让make命令输出将要执行的操作步骤,而不是真正执行这些操作。
III、-f <filename>:告诉make命令将那个文件作为makefile文件。
2)、为了指示make命令创建一个特定的目标,可以把该目标的名字作为make命令额一个参数。如果不这么做,make命令将试图创建列在makefile文件中的第一个目标。
3)、依赖关系
I、依赖关系定义了最终应用程序里的每个文件与源文件之间的关系。
II、makefile文件规则:先写目标的名称。然后紧跟着一个冒号,紧接着是空格或制表符tad,最后使用空格或制表符tab隔开的文件列表。
4)、规则
3、makefile文件中的注释(马克file文件的注释以#开头,一直延续到这一行结束)
4、makefile文件中的宏
1)、通过语句MACRONAME=value在makefile文件中定义宏,引用宏的方法是使用$(MACRONAME)或${MACRONAME}。
2)、makefile文件中的宏常被用于设置编译器的选项。
3)、常见的宏列(P323 表9-1)
5、多个目标(P322-325代码)
6、内置规则(P325-326代码)
7、后缀和模式规则
1)、增加后缀名规则:首先需要在makefile文件中增加一行语句,告诉make命令这个新的后缀名。然后既可以用这个新的后缀名来定义规则。
2)、kmake使用特殊语法:.<old_suffix>.<new_suffix>:。
8、用make管理函数库
1)、函数库实际上就是文件,它们通常以.a为后缀名,在该文件中包含了一组目标文件。
2)、用于管理函数库的语法是lib(file.o),它的含义是目标文件file.o是存储在函数库lib.a中的。make命令用一个内置规则来管理函数库,该规则的常见形式如下所示:
.c.a:
&(cc) -c $(CFLAGS) $<
&(AR) -c $(ARFLAGS) $@ $*.o
I、第一条规则告诉它必须编译源文件以生成目标文件。
II、第二条规则告诉它用ar命令将新的目标文件添加到函数库中。
9、高级主题:makefile文件和子目录
1)、把构成几个函数库的文件从主文件中分离出来,并将它们保存到一个子目录的方法
I、在子目录中编写第二个makefile文件,它的作用是编译该子目录下的源文件,并将它们保存到一个函数中,然后将该库文件复制到上一级的主目录中。在主目录中的
makefile文件包含一条用于制作函数库的规则,该规则会调用第二个makefile文件如下所示:
mylib.a:
(cd mylibdirectory;$(MAKE))
II、在原来的马克file文件中添加一些宏。新添加的宏通过在我们已见过的宏的尾部追加一个字母得到,字母D代表目录,字母F代表文件名。然后你就可以用下面的规则来替
换内置的.c.o后缀规则:
.c.o:
$(CC) $(CFLAGS) -c $(@D)/$(<F) -o $(@D)/$(@F)
这条规则的作用是:编译子目录中的源文件并将目标文件放置在该子目录中。然后用如下到的依赖关系和规则来更新当前目录下的函数库:
mylib.a: mydir/2.o mydir/3.o
ar -rv mylib.a $?
10、GNU make和gcc
三、源代码控制
1、RCS(版本控制系统)
1)、RCS 能够跟踪并记录下源文件的每一次改动,并将这些改动都记录在一个文件中,该文件中记录的改动信息足够详细,你可以·通过这些信息重建出任何一个以前的版
本。
2)、RCS命令:
I、rcs(初始化RCS控制文件)
II、ci(将源文件的当前版本“签入”到RCS中)
III、co(如果想修改文件,必须首先“签出”该文件:如果只是想阅读该文件,可以用co命令重建当前版本的该文件并将它的权限改为只读:如果想对其进行修改,必须用命令
co -l锁住该文件0。)
IV、rlog(查看一个文件改动摘要)
V、rcsdiff(了解两个版本之间的区别)
VI、版本标识(RCS系统可以在源文件中使用一些特殊的字符串(宏)来帮助跟踪文件所做的改动。最常用的两个宏是$RCSfile$和$Id$。宏$RCSfile$将扩展为该文件的名
字,而$Id$将扩展为一个标识版本号的字符串。)
VII、ident(查找包含$Id$字符串的文件的版本)
2、SCCS(源代码控制系统)
3、RCS和SCCS的比较(P337 表9-2)
4、CVS(并发版本控制系统)
1)、CVS的本地使用(P337-P340例程)
2)、跨网络访问CVS(P340)
5、CVS的前端程序(WinCVS)
6、Subversion
四、编写手册页(P342-P345)
五、发行软件(P345-P348)
六、RPM软件包(P349-P258)
七、开发环境
1、KDevelop
2、其他开发环境(P360 表9-6)
- 《Linux程序设计》——开发工具
- 《Linux程序设计》学习笔记09——开发工具
- 开发易——VB.NET家族应用程序设计工具
- Linux程序设计01:开发工具和开发平台
- Linux程序设计笔记(第9章 开发工具)
- Linux驱动开发———Linux中断处理程序设计
- 嵌入式Linux C语言开发工具—开发工具概述
- Linux开发工具 — readelf、objdump、hexdump。
- Linux开发工具 — readelf、objdump、hexdump
- 《Linux程序设计》——shell程序设计
- Linux程序设计——MySQL
- Linux程序设计——shell
- 《Linux程序设计》——入门
- 《Linux程序设计》——终端
- 《Linux程序设计》——数据管理
- 《Linux程序设计》——MsSQL
- 《Linux程序设计》——调试
- Linux程序设计——线程
- C++各种进制数据输入
- 外键约束详解
- 我的ps失误经验贴
- rhsa型asp木马隐藏分析
- Codeforces 475C Kamal-ol-molk's Painting 模拟
- 《Linux程序设计》——开发工具
- 浅谈UML的概念和模型之UML九种图
- 使用webview加载,注意事项
- leetcode - Construct Binary Tree from Preorder and Inorder Traversal
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- Python宝典第19章:处理HTML与XML
- UI 常用方法总结之--- UILabel UITextField (不断更新中)
- 2014-10-06 让我们一起来对360误报说不!
- wpf 实现实时毛玻璃(live blur)效果