Linux编程——Makefile 使用
来源:互联网 发布:淘宝可靠的日本代购 编辑:程序博客网 时间:2024/06/01 08:27
在先前的文章中,我们已经学习了 gcc 和 gdb 的使用。本节,我们将介绍 Makefile 的使用。Makefile带来的好处就是——“自动化编译”,一但写好,只需要一个 make 命令,整个工程便可以完全编译,极大的提高了软件的开发效率(特别是对于那些项目较大、文件较多的工程)。
make是一个命令工具,最主要也是最基本的功能就是根据makefile文件中描述的源程序至今的相互关系来完成自动编译、维护多个源文件工程。
而makefile文件需要按某种语法进行编写,文件中需要说明如何编译各个源文件并链接生成可执行文件,要求定义源文件之间的依赖关系。
下面从一个简单实例入手,介绍如何编写Makefile。假设现在有一个简单的项目由几个文件组成:prog.c、 code.c、 code.h。这些文件的内容如下:
prog.c
#include <stdio.h>#include "code.h"int main(void){ int i = 1; printf ("myfun(i) = %d\n", myfun(i));}
code.c
#include "code.h"int myfun(int in){ return in + 1;}
code.h
extern int myfun(int);
这些程序都比较短,结构也很清晰,因此使用下面的命令进行编译:
$ gcc -c code.c -o code.o$ gcc -c prog.c -o prog.o$ gcc prog.o code.o -o test如上所示,这样就能生成可执行文件test,由于程序比较简单,而且数量也比较少,因此看不出来有多麻烦。但是,试想如果不只上面的3个文件,而是几十个或者是成百上千个甚至更多,那将是非常复杂的问题。
那么如何是好呢?这里就是makefile的绝佳舞台,下面是一个简单的makefile的例子。
首先 $ vim Makefile
test: prog.o code.o gcc prog.o code.o -o testprog.o: prog.c code.h gcc -c prog.c -o prog.ocode.o: code.c code.h gcc -c code.c -o code.oclean: rm -f *.o test
有了这个Makefile,不论什么时候修改源文件,只要执行一下make命令,所有必要的重新编译将自动执行。make程序利用Makefile中的数据,生成并遍历以test为根节点的树;现在我们以上面的实例,来学习一下Makefile的一般写法:
test(目标文件): prog.o code.o(依赖文件列表)tab(至少一个tab的位置) gcc prog.o code.o -o test(命令).......
一个Makefile文件主要含有一系列的规则,每条规则包含以下内容:一个目标,即make最终需要创建的文件,如可执行文件和目标文件;目标也可以是要执行的动作,如‘clean’;一个或多个依赖文件的列表,通常是编译目标文件所需要的其他文件。之后的一系列命令,是make执行的动作,通常是把指定的相关文件编译成目标文件的编译命令,每个命令占一行,并以tab开头(务必注意:是tab,而不是空格) 执行以上Makefile后就会自动化编译:
$ makegcc -c prog.c -o prog.ogcc -c code.c -o code.ogcc prog.o code.o -o test
最后就会多产生: porg.o code.o test这三个文件,执行./test
查看结果
还记得Makefile中的clean
吗?make clean
就会去执行rm -f *.o test
这条命令,完成 clean 操作。
Makefile还可以定义和使用宏(也称做变量),从而使其更加自动化,更加灵活,在Makefile中定义宏的格式为:
macroname = macrotext
使用宏的格式为:
$(macroname)
我们用 “宏” 的方式,来改写上面的 Makefile 例子。
OBJS = prog.o code.oCC = gcctest: $(BOJS) $(CC) $(OBJS) -o testprog.o: prog.c code.h $(CC) -c prog.c -o prog.ocode.o: code.c code.h $(CC) -c code.c -o code.oclean: rm -f *.o test
- Linux编程——Makefile 使用
- linux编程——makefile文件
- 【Linux】 C编程之 makefile使用
- linux c编程之Makefile使用
- linux C编程 Makefile的使用
- Linux下C语言编程基础 —— Makefile
- Linux编程——makefile编写技巧大全
- Linux编程Makefile模板
- Makefile与linux编程
- 【linux下编程】MakeFile
- linux编程学习笔记(五) make的使用和Makefile
- linux c编程:make Makefile工具的使用
- linux下的C编程和makefile的使用
- linux下makefile使用
- linux makefile的使用
- linux下 使用makefile
- Linux Makefile的使用
- 【Linux】Makefile 使用总结
- Ubuntu下Eclipse搭建ARM开发环境
- Docker笔记(1)--官方的tomcat镜像的使用(启动)
- csv读入数据,用julia/matplotlib/pyplot 画矢量图导入word中
- 魅族手机不能连接mac pro的eclipse
- fedora启动添加新用户使用root登录
- Linux编程——Makefile 使用
- XAML中如何转义尖括号和大括号
- typeof
- 最美应用-从Android研发工程师的角度之[厨房故事]
- Android-Volley网络通信框架(ImageRequest,ImageLoader,NetWorkImageView)
- 【转】windows下编译和安装redis
- NSUserDefaults 读取Bool值引起的错误
- JAVA中抽象类和接口之间的区别
- 欢迎使用CSDN-markdown编辑器