makefile简介
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。你需要做的就是编写makefile 规则,然后 命令行输入 make 就可以为你自动编译了。
gcc 和 gcc -c 的区别
在 Linux 中 gcc 用于直接生成链接文件如果不指明文件名通常为xx.out,gcc -c 用于生成目标文件,不进行链接,文件名后缀为xx.o
makefile 规则示例
objectFile(目标文件):neededFile(所需文件)
command(生成目标文件所需命令)
简单示例
现有如下几个文件:
在命令行键入 make ,控制台结果:
forcehack@forcehack-virtual-machine:~/Desktop$ make
gcc -c main.c
gcc -c hello.c
cc main.o hello.o -o main
make 就自动执行了规则定义的编译过程,执行 make clean 就可以清除中间件产生的 .o 文件了
forcehack@forcehack-virtual-machine:~/Desktop$ make clean
rm *.o
现在剩下的目录结构为:
多了一个main 文件,和我们定义的规则相同,现在尝试执行一下这个文件 ./main
forcehack@forcehack-virtual-machine:~/Desktop$ ./main
This is main func
This is hello func
一切和预期一致,以上就为makefile 简单规则编写的自我理解