1、make:是编译命令,本质上它是一个程序。对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员来说简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。
2、Makefile文件
:Make工具最主要也是最基本的功能就是通过Makefile文件来描述源程序之间的相互关系并自动维护编译工作,本质上Makefile文件是个文本文件,用于配置编译过程。Makefile
文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。
过程为:
helloworld.c–>helloworld.o–>helloworld
——————编译 ——————链接——————
Makefile
root@ubuntu:~/lesson/chap1/1-1# more Makefile
hello:helloworld.o
gcc -o hello helloworld.o
helloword.o:helloworld.c
gcc -o helloworl.o -c helloworld.c
clean:
rm hello helloworld.o
gcc
gcc [-o outfile] [@file] infile...
-c表示只编译(compile)源文件但不链接,会把.c的c源程序编译成目标文件,一般是.o文件。
-o用于指定输出(out)文件名。不用-o的话,一般会在当前文件夹下生成默认的a.out文件作为可执行程序