单文件夹下的C程序如何编写Makefile文件
通过学习已经学会了GCC的一些基础的命令,以及如何将C语言源代码编译成可执行文件。
我们已经知道在linux环境下编译源码时,常会有以下三个步骤:
./configure
make
make clean
执行./configure时,会检查系统的配置等,得到相关的有用的信息,生成Makefile文件。
执行make命令时,make命令解释Makefile文件中的规则,生成目标文件。
执行make clean会删除生成目标文件过程中的生成的中间文件。
Makefile文件是可以由我们手工建立的:接下来是编写在同一个文件夹下的程序的Makefile文件。
文件有compute.c与m.h,代码如下:
1 //compute.c 2 #include<stdio.h> 3 #include"m.h" 4 int main(){ 5 int a=2,b=3; 6 printf("a+b=%d\n",add(a,b)); 7 printf("a*b=%d\n",multi(a,b)); 8 return 0; 9 }
1 //m.h 2 int add(int a,int b){ 3 int c; 4 c = a+ b; 5 return c; 6 } 7 8 int multi(int a, int b){ 9 int c=a*b; 10 return c; 11 }
编写的Makefile文件如下:
1 #makefile 2 objects=compute.o 3 CC=@gcc #如果没有@符号,gcc的命令就会输出到终端 4 CPP=@gcc -c #如果有@符号,gcc的命令就不会输出到终端 5 6 compute:$(objects) 7 $(CC) -o compute $(objects) 8 9 #标准写法 10 compute.o:compute.c m.h 11 $(CPP) compute.c 12 13 14 #简写形式; 15 #make自动推导 因为要生成.o文件,就需要相关联的compute.c文件, 16 #make会自动生成gcc -c compute.c的命令 17 #compute.o:m.h 18 19 clean: 20 @rm compute $(objects)
接下来,执行make命令,就会生成compute.o文件与可执行文件compute.
$ ls -l 总用量 12 -rw-r--r-- 1 qi qi 133 5月 16 17:18 compute.c -rw-r--r-- 1 qi qi 224 5月 17 14:38 Makefile -rw-r--r-- 1 qi qi 105 5月 16 17:14 m.h $ make $ ls -l 总用量 28 -rwxr-xr-x 1 qi qi 8480 5月 17 19:23 compute -rw-r--r-- 1 qi qi 133 5月 16 17:18 compute.c -rw-r--r-- 1 qi qi 1944 5月 17 19:23 compute.o -rw-r--r-- 1 qi qi 224 5月 17 14:38 Makefile -rw-r--r-- 1 qi qi 105 5月 16 17:14 m.h
执行make clean会按照Makefile文件中的伪目标clean,对文件进行删除操作。
$ make clean $ ls -l 总用量 12 -rw-r--r-- 1 qi qi 133 5月 16 17:18 compute.c -rw-r--r-- 1 qi qi 224 5月 17 14:38 Makefile -rw-r--r-- 1 qi qi 105 5月 16 17:14 m.h
分享的是知识
收获的是成长
欢迎转载,并提出指导意见。转载请附上文章出处!!!
收获的是成长
欢迎转载,并提出指导意见。转载请附上文章出处!!!