Makefile是什么,make又是什么
- 建议看阮一峰老师的教程;链接:点我.
代码变成可执行文件,叫做编译(compile);先编译这个,还是先编译那个(即编译的安排),叫做构建(build)。
Make是最常用的构建工具,诞生于1977年,主要用于C语言的项目。但是实际上 ,任何只要某个文件有变化,就要重新构建的项目,都可以用Make构建;但是make依赖一定的规则
像这样的规则,都写在一个叫做Makefile的文件中,Make命令依赖这个文件进行构建。Makefile文件也可以写为makefile, 或者用命令行参数指定为其他文件名。
总之,make只是一个根据指定的Shell命令进行构建的工具。它的规则很简单,你规定要构建哪个文件、它依赖哪些源文件,当那些文件有变动时,如何重新构建它。
以tree为例子学习:
- 三种方式修改prefix的变量名:
vip39@VM-0-15-ubuntu:~/src/tree-1.8.0$ vim Makefile
...
prefix = /usr
CC=gcc
VERSION=1.8.0
TREE_DEST=tree
...
# 修改prefix
vip39@VM-0-15-ubuntu:~/src/tree-1.8.0$ make install prefix=$HOME/opt/sysoft
install -d /home/vip39/opt/sysoft/bin
install -d /home/vip39/opt/sysoft/man/man1
if [ -e tree ]; then \
install tree /home/vip39/opt/sysoft/bin/tree; \
fi
install doc/tree.1 /home/vip39/opt/sysoft/man/man1/tree.1
# 修改Makefile 中的prefix为:
# vim Makefile:
prefix = $(HOME)/opt/sysoft #此处HOME需要添加()
vip39@VM-0-15-ubuntu:~/src/tree-1.8.0$ make
make: Nothing to be done for 'all'.
vip39@VM-0-15-ubuntu:~/src/tree-1.8.0$ make install
install -d /home/vip39/opt/sysoft/bin
install -d /home/vip39/opt/sysoft/man/man1
if [ -e tree ]; then \
install tree /home/vip39/opt/sysoft/bin/tree; \
fi
install doc/tree.1 /home/vip39/opt/sysoft/man/man1/tree.1
源码编译三部曲:make小结
- configure执行时会根据环境变量去替换makefile中的变量
- make var=value 会将Makefile中的var赋值为value
- 如果一个makefile需要调用另一个makefile,相当于开了一个子进程
C/C++软件安装小结
- 首先安装编译好的安装包
- 安装的重点是编译好Makefile
网友评论