行业知识
makefile&GDB使用
一、makefile
1、make && makefile
makefile带���的好处就是——自动化编译,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率
下面我们通过如下示例来进一步体会它们的作用:
①编写makefile文件
touch makefilevim makefile
使用vim编辑器编辑makefile文件:
#makefile文件中的内容hello.exe:hello.c gcc hello.c -o hello.exe.PHONY:cleanclean:rm -f hello.exe
此时我们只需一个make命令即可完成自动编译:
make
make命令的作用,即是执行makefile中的命令,此处执行的命令是:
gcc hello.c -o hello.exe
当我们输入:
make clean
此处就执行了:
rm -f hello.exe
2、make执行步骤
当我们在Linux中输入并执行make命令时,make会干些什么呢?
step 1:make会在当前目录下寻找Makefile文件,找到了就会用这个文件作为后续操作的依据;如果没找到Makefile,就会寻找名为makefile的文件;两个都没找到就报错;
step 2:找到Makefile或者makefile之后,默认文件中第一行作为第一个目标;make命令会分析第一个目标的依赖关系,并且执行该目标的依赖方法**;
2.1 依赖关系
hello.exe:hello.c #依赖关系
makefile文件中hello.exe就是目标(期望生成的内容);我们编译文件hello.c,期望生成它对应的可执行文件hello.exe,而你要编译生成这个目标文件,需要依赖hello.c这个文件,这就是依赖关系。
2.2 依赖方法
有了依赖关系,我们就知道了生成目标可执行文件hello.exe需要依赖hello.c这个文件,那么我们该怎么利用hello.c文件生成hello.exe文件呢?我们是不是还缺少一个方法,而这个使用目标的依赖关系文件生成期望的目标文件的方法就是依赖方法。
gcc hello.c -o hello.exe #依赖方法
需要注意的是,依赖文件列表可以为空
3、项目清理
# makefile文件中的清理部分.PHONY:cleanclean:rm -f code
上述makefile文件中,该部分即为项目清理部分;在上述介绍中,我们知道需要显式输入make clean才能实现清除编译好的文件hello.exe以便重新编译:
其中.PHONY的使用,是将它设置为伪目标,伪目标的特性是:总是被执行的❓
4、伪目标 .PHONY
怎样理解总是被执行的?我们试着多次输入make指令,发现结果如下:
结果:当第一次使用make命令时,目标被执行生成了一个可执行文件,而当我们再使用make命令时发现make虽然不会报错但是会告诉我们生成的文件的已经是最新的了,目标并没有被执行
那么多次输入make clean指令呢?结果如下:
可以一直执行rm -f hello.exe这条指令!(即使已经重复执行了)
我们将生成可执行文件过程更改为伪目标(使用vim编辑器):
# 修改makefile文件.PHONY:hello.exehello.exe:hello.cgcc hello.c -o hello.exe
再测试一下:
二、GDB
GDB是命令行模式的调试工具,能够让用户在程序运行时观察程序的内部结构和内存的使用情况。
1、准备工作
gdb_test.c:
#includevoid Print(int sum){ long long timestamp=time(NULL); printf("result=%d,timestamp:%lld\n",sum,timestamp);}int AddtoVal(int from,int to){ int sum=0; for (int i = from; i sum+=i; } return sum;}int main(){ int sum=AddtoVal(0,100); Print(sum); return 0;}
上一篇:怎么设计自己的作品?
下一篇:阳澄湖服务器区怎么出去?