分类: LINUX
2011-02-22 22:45:47
//视频学习. 1-1 GCC程序编译
Gcc最基本使用方法:
Gcc [options][filenames]
Options:编译器所需要的编译选项.
Filenames:要编译的文件名.
编译选项:
1. –o output_filename: 确定输出的可执行文件名称为output_filename,若不指定,默认输出a.out
2. –c: 只编译,不连接生成可执行文件.只生成.o后缀的目标文件.
3. –g: 产生gdb所需要的符号信息,要想对程序进行调试,则编译时需要加入该参数.
4. –O: 对程序进行优化编译链接.
5. –O2: 比-O更好的优化.
6. –Idirname: 将dirname所指出的目录加入到程序头文件目录列表中.
7. –Ldirname: 将dirname所指出的目录加入到库文件的目录列表中.
8. –lname: 在链接时,装载libname.a函数库.即链接特定库,如数学库.
9. –static: 静态链接库文件.(gcc默认采用动态链接的方式.)
10. –Wall: 生成所有警告信息.
11. –w: 不生成警告信息.
12. –DMACRO: 定义MACRO宏,等于c语言中的#define MACRO
//视频学习. 1-2 GDB 程序调试
1. 启动gdb: 方法1. gdb 调试程序名
方法2. gdb 回车, 然后用file 调试程序名
2. list(l) :查看程序
3. break(b) 函数名 :在函数入口处打断点
4. break 行号 :在指定行加断点
5. break 文件名:行号 : 在指定文件的行加断点.
6.break 行号 if 条件 : 当条件为真时,断点生效.
7.info break : 查看所有设置的断点
8.delete 断点编号 : 删除断点
9.run(r) :开始运行程序
10. next(n) : 单步执行.
11. step(s) :与next区别, 单步遇到子函数时会进入子函数,而next会跳过该函数.
12.continue :遇到断点后, 继续运行直到完成或再遇到断点.
13.print(p)变量名 : 查看指定变量的值
14.finish : 运行程序直到当前函数结束.
15.watch 变量名 : 对指定变量进行监控.
16.quit(q) 退出gdb.
//视频学习. 1-3 Makefile工程管理
Linux
Linux程序员必须会使用GNU make来构建和管理自己的软件工程.
GNU的make能够使整个软件工程的编译、链接只需要一个命令就可以完成.
make在执行时,需要一个命名为Makefile的文件.Makeile文件描述了整个工程的编译,链接等规则.其中包括工程中哪些源文件需要编译及如何编译.创建哪些库文件及如何创建这些库文件,如何最后产生我们想要的可执行文件。
Makefile(术语)
1. 规则: 用于说明如何生成一个或多个目标文件,规则格式如下:
Targets(目标) : prerequisites(依赖)
Command(命令)
注意命令需要以Tab键开始.
在Makefile中,规则的顺序很重要,因为Makefile中只应该有一个最终目标,一定要让make知道你的最终目标是什么,一般来说,第一条规则中的目标将被确定为最终目标。
2. 文件名
make命令默认在当前目录下寻找名字为makefile或Makefile的工程文件,当名字不为这两者之一时,可以使用如下方法指定:
make –f 文件名
3. 伪目标
Makefile 中把哪些没有任何依赖只有执行动作的目标称为“伪目标”(phony targets)。
.PHONY :
4. 变量
在makefile中,存在系统默认的自动化变量
(1) $^ : 代表所有的依赖文件
(2)$@: 代表目标
(3)$<: 代表第一个依赖文件.
5. 杂项
(1)Makefile中”#”字符后表示注释
(2)命令要以Tab键开始.
(3)命令前面@符的作用. 加@符会取消编译时命令的回显.
//视频学习. 1-4 必修实验
1. 编写应用,用gcc编译,要求用-o,-g,-static,-O2选项,对比用和不用差别;
2. 编写应用,用gdb调试,调试中使用小节中用的gdb命令;
3. 编写应用,由2个c文件构成,使用makefile来完成程序的编译.
chinaunix网友2011-03-06 16:17:42
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com