美文网首页
理解Makefile

理解Makefile

作者: 泥人吴 | 来源:发表于2018-12-01 10:07 被阅读0次

    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

    相关文章

      网友评论

          本文标题:理解Makefile

          本文链接:https://www.haomeiwen.com/subject/amjlcqtx.html