makefileclean怎么写

1.如何写Makefilehello: hello.o
gcc -o hello hello.o
hello.o: hello.c
gcc -c hello.c
clean:
rm -f hello *.o *.bak *~这就是最简单的helloworld的makefile有三个目标:hello、hello.o、clean , 最上面的那个是默认目标 , make不带参数时 , 找的就是这个目标 。目标回溯过程:
目标hello =>; 依赖于hello.o =>; 目标hello.o =>; 依赖于 hello.c => hello.c =>; 成功
目标生成过程:
gcc -c hello.c =>; 得到hello.o =>;执行gcc -o hello hello.o =>; 得到hello => make成功!示例:
make
make hello.o
make clean
2.linux makefile怎么写1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
INC_PATH := -I./include/
LIB_PATH := -L./lib/
LIBS := $(LIB_PATH) -lerr -larm
CC := gcc
LD := gcc
CFLAGS := -O2 -Wall $(INC_PATH)
SRC_PATH := ./source
SOURCE := $(SRC_PATH)/a.c\
$(SRC_PATH)/b.c\
$(SRC_PATH)/c.c
TARGET := target
OBJS := a.o b.o c.o
$(TARGET): $(OBJS)
$(LD) -O2 -o $(TARGET) $(OBJS) $(LIBS)
a.o : $(SRC_PATH)/a.c
$(CC) $(CFLAGS) -c -o [email protected] $
3.如何自己编写Makefile相信很多朋友都有过这样的经历 , 看着开源项目中好几页的makefile文件 , 不知所云 。
在日常学习和工作中 , 也有意无意的去回避makefile , 能改就不写 , 能用ide就用ide 。其实makefile并没有想象的那么难写 , 只要你明白了其中的原理 , 自己实践几次 。
你也可以自己写makefile , 让别人对你头来羡慕的目光 。下面本人介绍一下自己的学习成果 , 初学阶段 , 欢迎大家多多指正 。
简单的说 , makefile定义了一系列的规则来指定 , 哪些文件需要先编译 , 哪些文件需要后编译 , 哪些文件需要重新编译 , 甚至可以在makefile中执行shell脚本 。makefile带来的好处就是——“自动化编译” , 一旦写好 , 只需要一个make命令 , 整个工程完全自动编译 , 极大的提高了软件开发的效率 。
关于程序的编译和链接 一般来说 , 无论是C还是C++ , 首先要把源文件编译成中间代码文件 , 在Windows下也就是 .obj 文件 , UNIX下是 .o 文件 , 即 Object File , 这个动作叫做编译(compile) , 一般来说 , 每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件) 。然后再把大量的Object File合成执行文件 , 这个动作叫作链接(link) 。
编译时 , 编译器需要的是语法的正确 , 函数与变量的声明的正确 。对于后者 , 通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明 , 而定义应该放在C/C++文件中) , 只要所有的语法正确 , 编译器就可以编译出中间目标文件 。
链接时 , 主要是链接函数和全局变量 , 所以 , 我们可以使用这些中间目标文件(O文件或是OBJ文件)来 链接我们的应用程序 。链接器并不管函数所在的源文件 , 只管函数的中间目标文件(Object File) , 在大多数时候 , 由于源文件太多 , 编译生成的中间目标文件太多 , 而在链接时需要明显地指出中间目标文件名 , 这对于编译很不方便 , 所以 , 我们要给 中间目标文件打个包 , 在Windows下这种包叫“库文件”(Library File) , 也就是 .lib 文件 , 在UNIX下 , 是Archive File , 也就是 .a 文件 。