红联Linux门户
Linux帮助

单文件夹下的C程序如何编写Makefile文件

发布时间:2017-05-18 09:52:57来源:linux网站作者:小灰奇
通过学习已经学会了GCC的一些基础的命令,以及如何将C语言源代码编译成可执行文件。
我们已经知道在linux环境下编译源码时,常会有以下三个步骤:
./configure
make
make clean
执行./configure时,会检查系统的配置等,得到相关的有用的信息,生成Makefile文件。
执行make命令时,make命令解释Makefile文件中的规则,生成目标文件。
执行make clean会删除生成目标文件过程中的生成的中间文件。
Makefile文件是可以由我们手工建立的:接下来是编写在同一个文件夹下的程序的Makefile文件。
 
文件有compute.c与m.h,代码如下:
//compute.c
#include<stdio.h>
#include"m.h"
int main(){
int a=2,b=3;
printf("a+b=%d\n",add(a,b));
printf("a*b=%d\n",multi(a,b));
return 0;
}
 
//m.h
int add(int a,int b){
int c;
c = a+ b;
return c;
}
int multi(int a, int b){
int c=a*b;
return c;
}
 
编写的Makefile文件如下:
#makefile
objects=compute.o
CC=@gcc      #如果没有@符号,gcc的命令就会输出到终端
CPP=@gcc -c  #如果有@符号,gcc的命令就不会输出到终端
compute:$(objects)
$(CC) -o compute $(objects)
#标准写法
compute.o:compute.c m.h
$(CPP) compute.c
#简写形式;
#make自动推导 因为要生成.o文件,就需要相关联的compute.c文件,
#make会自动生成gcc -c compute.c的命令
#compute.o:m.h
clean:            
@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
 
本文永久更新地址:http://www.linuxdiyf.com/linux/30859.html