make

make是一条计算机指令,是在安装有GNU Make的计算机上的可执行指令。该指令是读入一个名为makefile的文件,然后执行这个文件中指定的指令。

基本用法

makefile知识点
makefile进阶

使用autotools来进行Makefile的自动生成

  • 运行 autoscan , 自动创建两个文件: autoscan.log configure.scan
    1
    2
    3
    [root@localhost main]# autoscan
    [root@localhost main]# ls
    autoscan.log configure.scan main.c
  • 修改configure.scan的文件名为configure.in
    修改configure.in:
    1.修改AC_INIT里面的参数: AC_INIT(main,1.0, pgpxc@163.com)
    2.添加宏AM_INIT_AUTOMAKE, 它是automake所必备的宏,也同前面一样,PACKAGE是所要产生软件套件的名称,VERSION是版本编号。
    3.在AC_OUTPUT后添加输出文件Makefile

修改后的结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.61)
AC_INIT(main, 1.0, pgpxc@163.com)
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE(main,1.0)

# Checks for programs.
AC_PROG_CC

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_OUTPUT([Makefile])
  • 运行 aclocal, 生成一个“aclocal.m4”文件和一个缓冲文件夹autom4te.cache,该文件主要处理本地的宏定义。
    此时的状态是:
    1
    2
    3
    [root@localhost main]# aclocal
    [root@localhost main]# ls
    aclocal.m4 autom4te.cache autoscan.log configure.in configure.in~ main.c
  • 运行 autoconf, 目的是生成 configure
    此时的状态是:
    1
    2
    3
    4
    [root@localhost main]# autoconf
    [root@localhost main]# ls
    aclocal.m4 autoscan.log configure.in main.c
    autom4te.cache configure configure.in~
  • 运行 autoheader,它负责生成config.h.in文件。该工具通常会从“acconfig.h”文件中复制用户附加的符号定义,因此此处没有附加符号定义,所以不需要创建“acconfig.h”文件。
    此时的状态是:
    1
    2
    3
    4
    [root@localhost main]# autoheader
    [root@localhost main]# ls
    aclocal.m4 autoscan.log configure configure.in~
    autom4te.cache config.h.in configure.in main.c
  • 下面即将运行 automake, 但在此之前应该做一下准备工作!
    首先,创建一个 Makefile.am.这一步是创建Makefile很重要的一步,automake要用的脚本配置文件是Makefile.am,用户需要自己创建相应的文件。之后,automake工具转换成Makefile.in。
    这个Makefile.am的内容如下:
    1
    2
    3
    AUTOMAKE_OPTIONS=foreign
    bin_PROGRAMS=main
    main_SOURCES=main.c
    其次,使用automake对其生成“configure.in”文件,在这里使用选项“—adding-missing”可以让automake自动添加有一些必需的脚本文件。
    运行后的状态是:
    1
    2
    3
    4
    5
    6
    7
    8
    [root@localhost main]# automake --add-missing
    configure.in:8: installing `./missing'
    configure.in:8: installing `./install-sh'
    Makefile.am: installing `./depcomp'
    [root@localhost main]# ls
    aclocal.m4 config.h.in configure.in~ main.c Makefile.in
    autom4te.cache configure depcomp Makefile.am missing
    autoscan.log configure.in install-sh Makefile.am~
  • 到这里,就是我们熟悉的环节了。
    运行configure,在这一步中,通过运行自动配置设置文件configure,把Makefile.in变成了最终的Makefile。
    运行make,根据Makefile操作。
    运行make install,安装到指定目录。

La Psiquiatría/psicología es el único negocio donde el cliente nunca ti ene la razón.