Makefile文件的编写
2016-09-19 19:02
260 查看
博客内容来源:网络、书籍和自己整理补充
现在有一个helloworld.c文件,编写一个Makefile,要求实现生成helloworld可执行文件,并实现install,uninstall ,clean目标(平台不限)
Makefile文件由以下三个部分组成:需要生成的目标文件(target file)、生成目标文件所需要的依赖文件(dependency file)、生成目标文件的编译规则命令行(command)
target file:dependency file
<Tab>command
第一种Makefile文件编写方式:标准版
helloworld:helloworld.o
gcc helloworld.o -o helloworld
helloworld.o:helloworld.c
gcc -c helloworld.c -o helloworld.o
clean:
rm -rf *.o helloworld
install:
mkdir /home/mm
cp helloworld /home/mm
uninstall:
rm -rf /home/mm
-->make
-->make clean
-->make install
-->make uninstall
第二种Makefile文件编写方式:高配版
OBJS = helloworld.o
CC = gcc
CFLAGS = -Wall -O1 -g
helloworld:$(OBJS)
$(CC) $(OBJS) -o helloworld
helloworld.o:helloworld.c
$(CC) $(CFLAGS) -c helloworld.c
clean:
rm -rf *.o helloworld
helloworld_dir = /home/mm
install:
mkdir $(helloworld_dir)
cp helloworld $(helloworld_dir)
uninstall:
rm -rf $(helloworld_dir)
-->make
-->make clean
-->make install
-->make uninstall
第三种Makefile文件编写方式:尊享版
OBJ = helloworld.o
CC = gcc
CFLAGS = -wall -O1 -g
.PHONY:all
all:helloworld $(OBJS)
helloworld:$(OBJS)
$(CC) $(OBJS) -o helloworld
helloworld.o:helloworld.c
$(CC) $(CFLAGS) -c helloworld.c
.PHONY:clean
clean:
rm -rf $(OBJS) helloworld
helloworld_dir = /home/mm
.PHONY:install
install:
mkdir $(helloworld_dir)
cp helloworld $(helloworld_dir)
.PHONY:uninstall
uninstall:
rm -rf $(helloworld_dir)
-->make all:运行命令“make all”后,make会把all看成最终的目标。由于伪目标和真实目标一样都有依赖文件,所以make会更新all的依赖文件helloworld、helloworld.o
-->make clean:运行命令“make clean”后,make会执行命令“rm -rf helloworld $(OBJS)”
-->make install:运行命令“make install”后,make会顺序执行“mkdir $(helloworld_dir)"和“cp helloworld $(helloworld_dir)”,把helloworld文件复制到helloworld_dir变量指定的目录中去
-->make uninstall:运行命令“make uninstall”后,make会执行命令“rm -rf $(helloworld)”,这样就可以把变量helloworld_dir指定的目录以及目录中的文件全部删除
希望能对大家有帮助!谢谢阅读!
现在有一个helloworld.c文件,编写一个Makefile,要求实现生成helloworld可执行文件,并实现install,uninstall ,clean目标(平台不限)
Makefile文件由以下三个部分组成:需要生成的目标文件(target file)、生成目标文件所需要的依赖文件(dependency file)、生成目标文件的编译规则命令行(command)
target file:dependency file
<Tab>command
第一种Makefile文件编写方式:标准版
helloworld:helloworld.o
gcc helloworld.o -o helloworld
helloworld.o:helloworld.c
gcc -c helloworld.c -o helloworld.o
clean:
rm -rf *.o helloworld
install:
mkdir /home/mm
cp helloworld /home/mm
uninstall:
rm -rf /home/mm
-->make
-->make clean
-->make install
-->make uninstall
第二种Makefile文件编写方式:高配版
OBJS = helloworld.o
CC = gcc
CFLAGS = -Wall -O1 -g
helloworld:$(OBJS)
$(CC) $(OBJS) -o helloworld
helloworld.o:helloworld.c
$(CC) $(CFLAGS) -c helloworld.c
clean:
rm -rf *.o helloworld
helloworld_dir = /home/mm
install:
mkdir $(helloworld_dir)
cp helloworld $(helloworld_dir)
uninstall:
rm -rf $(helloworld_dir)
-->make
-->make clean
-->make install
-->make uninstall
第三种Makefile文件编写方式:尊享版
OBJ = helloworld.o
CC = gcc
CFLAGS = -wall -O1 -g
.PHONY:all
all:helloworld $(OBJS)
helloworld:$(OBJS)
$(CC) $(OBJS) -o helloworld
helloworld.o:helloworld.c
$(CC) $(CFLAGS) -c helloworld.c
.PHONY:clean
clean:
rm -rf $(OBJS) helloworld
helloworld_dir = /home/mm
.PHONY:install
install:
mkdir $(helloworld_dir)
cp helloworld $(helloworld_dir)
.PHONY:uninstall
uninstall:
rm -rf $(helloworld_dir)
-->make all:运行命令“make all”后,make会把all看成最终的目标。由于伪目标和真实目标一样都有依赖文件,所以make会更新all的依赖文件helloworld、helloworld.o
-->make clean:运行命令“make clean”后,make会执行命令“rm -rf helloworld $(OBJS)”
-->make install:运行命令“make install”后,make会顺序执行“mkdir $(helloworld_dir)"和“cp helloworld $(helloworld_dir)”,把helloworld文件复制到helloworld_dir变量指定的目录中去
-->make uninstall:运行命令“make uninstall”后,make会执行命令“rm -rf $(helloworld)”,这样就可以把变量helloworld_dir指定的目录以及目录中的文件全部删除
希望能对大家有帮助!谢谢阅读!
相关文章推荐
- VS.net下编写makefile文件--NMAKE用法
- Linux平台Makefile文件的编写基础篇
- Linux C/C++ 多目标文件的链接及其Makefile编写($<与$^)
- 2010.11.17--如何编写Makefile文件(一)
- Linux平台Makefile文件的编写基础篇
- Linux平台Makefile文件的编写基础篇
- source文件和makefile文件编写
- make 的 makefile 文件编写
- 编写Makefile文件(转)
- Linux平台Makefile文件的编写基础篇
- Makefile文件的编写
- 编写Makefile文件
- 第10章 多模块编译链接 Makefile文件的编写
- 【转贴】Linux平台Makefile文件的编写基础
- Linux平台Makefile文件的编写基础篇
- Makefile文件编写简介
- 编写简单的Makefile文件
- makefile和source文件的编写
- 简单的Makefile文件编写
- Fortran makefile 文件编写实例