工程管理器
点击“make”按钮对整个程序进行自动编译
make工程管理器完全根据makefile文件中编译规则命令进行工作
Makefile 由以下三项基本内容组成:
目标文件(target file)
依赖文件(dependency file)
编译规则命令行(command)
Target file : dependency file
<Tab>command
Makefile 提供变量来代替文件名,变量名的使用方法是
$(变量名)
自动推导功能默认每个目标文件都有一个与之对应的依赖文件,这样就不需要指定与目标文件对应的依赖文件
例:
Obj = a.o b.o
Test:$(obj)
Cc -o test $(obj)
通过伪目标可以让工程管理器只执行规则命令,不用创建实际的目标文件
使用方式为
Make 伪目标名
为了不和真实的目标文件混淆,使用“.PHONY”对目标文件进行标识
例:
Cc = gcc
Target=hello
Object=hello.o
$(target):$(object)
$(cc) $(object) -o $(target)
.PHONY :clean
Clean:
rm -rf hello.o
运行make会完成自动编译
运行“./hello”执行目标文件
运行“make clean”make会执行命令rm -rf hello.o
嵌套执行:把makefile分解成多个子makefile,放置到程序的每个子目录中,每个子makefile文件负责所在目录下源文件的编译
使用方法是:
$(make) -c 子目录
条件判断
工程管理器可以在运行时对条件进行判断,然后进入条件分支继续编译
书写格式如下:
条件表达式
如果真执行的文本段
Else
如果假执行的文本段
endif
Makefile 的自动生成
Autoscan
Aclocal
Autoconf
Autoheader
Automake
Configure
GDB调试器
只依靠gcc调试效率非常低
运行命令“gcc -g test.i -o test”对test.i进行编译,g的作用是把调试信息加入到生成的test可执行文件中
Gdb test 启动GDB对test进行调试
L(ist) 查看源文件
B 7 在第7行设置断点
Info b 查看所有断点情况
R 运行程序 默认从代码的首行开始
R 行数 让程序从指定行数开始运行
“P 变量名” 查看变量值
C 继续运行程序
Next 下一步(不进入函数内部运行)
Step 下一步(在发生函数调用时进入函数内部运行)
Return 从函数返回
Q 退出