在linux/unix系统中,make命令是一个非常重要的编译命令。
只要正确的写好了Makefile,就可以通过make命令很方便的编译出可执行程序。
某些IDE(Integrated Development Environment)上有提供make按钮,供编译源代码,
这个make按钮所执行的功能和make命令所做的事很相像。
window系统下的编程可能这种IDE开发环境会相对较多。
make命令可以指定具体的Makefile,来决定要怎么编译:
make -f ./../makefile,
其中-f命令选项用来读取指定的Makefile。
如果没有指定具体的Makefile文件,那默认情况下make命令会从当前目录下
去读取名称为Makefile(不同linux版本可能不完全相同)的档案。
整个build的过程是:预编译->编译->链接,最终形成可以执行的可执行文件。
make命令编译源代码有一些基本的规则:
1. 如果源代码从来没有被编译过,那么make命令会进行编译;
2. 在编译过源代码之后,又重新修改了源代码内容,那么make命令会对其进行编译;
3. 如果修改了头文件部分,那么所有include了该头文件的文件都会被重新编译;
make命令依据档案的修改时间来决定要不要编译某个源文件,如果检查到源文件的修改时间比目标文件的修改时间要新,
那么就是目标文件存在,make依然会去编译这个源文件(此时make会认为用户修改了源文件)去编译出更新的目标文件处理。
关于makefile也需要注意,特别是tab字符和空格字符的使用,一不小心就会造成奇怪的错误。
1. makefile中可以include其它的makefile;
2. 以include开头的行必须不能以tab字符开始;
3. 每一行的行末千万不要加空格。
PS:这些说起来就是一句话的事,很多时候真的也是很多人容易忽视的问题。
make命令和make规则很复杂,很强大。
后面本人也会将学习过程中的心得体会慢慢补充上来。