如何编写makefile文件

来源:互联网 发布:如何删除部落冲突数据 编辑:程序博客网 时间:2024/05/24 04:07

Makefile工程管理器

 

已有Addressbook.c main.c Addressbook.h 文件  

 

建立vim  Makefile 文件 //M要大写

Makefile具体内容

在终端是输入make     //相当于在终端输入gcc  Addressbook.c main.c

 

Makefile 文件相当于经历了 预处理、编译、汇编、链接这四个过程

 

每次在终端输入make ,只编译改动过的文件,如果未改动,在终端输入make时会显示最新的,然后输入./a.out即可

 

 

//编译过程

1.预处理 (宏替换)

命令 gcc -E hello.c -o hello.i //一般用i,换成j也行

生成的hello.i 文件中 包括了 头文件#include <stdio.h>的内容

如果hello.c 中包括了#define PI 3.1415 ,那么生成的hello.i文件中的PI都被替换为 3.1415

 

2.编译(生成汇编文件)

gcc -s hello.c -o hello.s

 

3.汇编(二进制文件)

 gcc -c hello.c -o hello.o

4.链接

gcc hello.c

.c文件中用到的函数例如printf()函数,要去函数库中找到匹配函数,生成可执行文件

 

 

//从下往上

Addressbook:  main.o  Addressbook.o

gcc  main.o  Addressbook.o  -o  Addressbook  //连接

main.o :  main.c  AddressBook.h

gcc  -c  main.c  -o  main.o

Addressbook.o :  AddressBook.c  AddressBook.h

gcc  -c  AddressBook.c  -o AddressBook.o   

 

.PYONE: clean

clean:

 rm -rf *.o       //删除所有.o文件

 

1.  .PYONE: clean

   clean:

       rm -rf *.o

这三句加上可以删除所有.o文件

具体实现: 在终端上输入make  clean // make代表首先要找到是否有Makefile这个文件

 

 

2. Addressbook.o :  AddressBook.c  AddressBook.h

Addressbook.o是目标文件,AddressBook.c AddressBook.h是源文件

 

 

3.Makefile 可以包含多个.c /.h文件,每个.c以及这个.c文件里所包含的.h头文件都要写成源文件,然后生成目标文件(如果该文件用到了数据库以及线程,则后面加上-lpthread  -sqlite3)

例如Addressbook.o :  AddressBook.c  AddressBook.h -lpthread  -sqlite3

 

4.   ./Addressbook 类似于./a.out

 

5.gcc /  rm -rf *.o前添的是tab键(不是空格)

 

6. //Makefile文件 换名字

mv  Makefile  newname  //改文件名

make  -f  newname        //若文件名不为Makefile,则不能用make直接编译,而要用该语句

make  -f  newname  clean   //makefile1文件的make clean命令

 

7.带变量的Makefile

obj:  main.o  Addressbook.o    

Addressbook:$(obj)

 //带有变量可少写.o文件,使书写简洁

gcc  $(obj)  -o  Addressbook   

main.o :  main.c  AddressBook.h

    gcc  -c  main.c  -o  main.o

Addressbook.o :  AddressBook.c  AddressBook.h

gcc  -c  AddressBook.c  -o   AddressBook.o

 

.PYONE: clean

clean:

 rm -rf *.o       //删除所有.o文件

 

原创粉丝点击