Linux Makefile编写
来源:互联网 发布:js获取月为两位数 编辑:程序博客网 时间:2024/05/18 02:53
我之前总结了gcc的用法,那么在实际工作中,每次用gcc会很麻烦,尤其是一些大型项目,有很多的目录结构,这个时候我们就需要编写Makefile文件,然后在实际工作中,用make来编译大型的项目,相信搞过android开发的一定对make,make install,make clean不陌生,分别是编译,安装和清理,下面我就用一个例子来说明Makefile怎么编写,还是上一讲的三个文件
func1.c
func2.c
main.c
来看一个简单的Makefile
Makefile的基本规则:
目标:依赖文件
执行程序
注意,执行程序前面要用tab键
还有Makefile只会认第一个总的目标,其他都是配合的目标
这里我们的目标就是生成main,那么需要依赖func1.o func2.o main.o
gcc -o main func1.o func2.o main.o 就是执行程序
下面再分别写目标func1.o func2.o main.o
.PHONY:clean
clean:
rm -rf main func1.o func2.o main.o
这是一个伪目标,后面不跟依赖,目的只是执行后面的执行程序,当我们执行make clean时,就会执行rm命令,把生成的一些中间文件都删除掉
好了,我们执行make,执行make就会去寻找Makefile,跟进里面的配置来执行
然后我们来执行主程序
然后执行make clean
Makefile有一个好处,比如修改了其中某一个文件,重新make的时候,只会重新编译修改的文件,其他文件不会编译
比如我们什么都不改,再执行make
比如我们现在修改下main.c,再make
我们看到func1.c和func2.c没有被重新编译,这也是用make的好处
一个简单的Makefile就是这样,下面我们来说下变量,我们可以在Makefile中定义变量,看下面的Makefile文件
我们定义了一个变量,object,接下来所有用到依赖的地方都用这个变量替换
我们还可以把条件判断加进来
很简单,不多说了
再说两个变量
$@:代表目标文件
$^:代表所有的依赖
刚才的程序还可以这样改
我们注意到在执行make的时候,执行程序都会输出,如果不想看到输出,可以在执行程序前面加一个@ 符号
其实我们还可以定义install的伪目标,一般这个命令就是把生成的可执行文件,复制到/usr/local下
有的时候,我们的Makefile不是真正的编译文件,而是包含的另外一个文件,那么就会去寻找另外一个文件,再编译,我们看下android源码跟目标的Makefile
那么其实我们也可以这样做,我们把Makefile改名为android.mk,然后新建一个Makefile
其实Makefile的规则远远不止这些,我这只是总结了一些简单的,如果想了解更多的,大家去官网查即可
好了,Linux Makefile编写就总结到这里,如有问题,欢迎指正,谢谢。
- linux makefile编写
- 【转】linux makefile编写
- 【Linux】 Makefile的编写
- linux makefile文件编写
- Study Linux- Makefile编写
- 【Linux】makefile文件编写
- linux 编写makefile文件
- Linux Makefile编写
- linux中makefile编写
- linux下简单makefile编写
- Linux下makefile的编写
- arm-linux下 编写Makefile
- Linux下编写makefile文件
- linux下makefile编写基础
- linux下的makefile 编写
- Linux下makefile的编写
- linux驱动的Makefile编写
- 小白用linux之makefile编写
- 十二章
- Gradle目录解析
- 判断是否是平板
- iOS 格式化输出 不足补0
- 光流跟踪相关总结
- Linux Makefile编写
- 高效使用AndroidStudio常用快捷操作
- Android 好用的框架整合集合
- 广播域与冲突域详细解析
- HTTP协议中get与post的区别
- java的动态代理机制详解
- 纯C打造轻量级brainfuck脚本语言解释器
- GitHub 中国区前 100 名到底是什么样的人?
- Opencv3.1基于Vibe去除前景