Makefile 自动生成 - configure & make

执行脚本 ./configure

configure:它能根据不同的系统,产生不同的 Makefile,从而使我们的程序具有可移植性。它还有一些参数:

参数 描述
–cache-file=FILE 测试系统的特性,并将结果放到FILE中
–help 输出帮助信息
–no-create 阻止其生成输出文件
–quiet 执行是不做输出
–silent 同上,若设置则不会有任何输出到屏幕
–version 输出automake的版本号
参数 描述
–prefix=PEWFIX 安装位置设置(常用)
–exec-prefix=EPREFIX 设置结构倚赖的文件的安装位置
–bindir=DIR 指定可执行文件的安装位置.
–sbindir=DIR 指定超级用户可执行的安装位置.
–libexecdir=DIR 指定可执行支持文件的安装位置.
–datadir=DIR 指定通用数据文件的安装位置.
–sysconfdir=DIR 指定只读数据的安装位置.
–sharedstatedir=DIR 指定共享的可写数据的安装位置.
–localstatedir=DIR 指定(非共享)可写数据的安装位置.
–libdir=DIR 指定库文件的安装位置.
–includedir=DIR 指定C头文件的安装位置.
–oldincludedir=DIR 指定为除GCC外编译器安装的C头文件的安装位置.
–infodir=DIR 指定Info格式文档的安装位置.
–mandir=DIR 指定手册页的安装位置.
–srcdir=DIR 源码的位置
–program-prefix=PREFIX 增加安装程序名字前缀.
–program-suffix=SUFFIX 增加安装程序名字后缀.
–program-transform-name=PROGRAM 产生安装名
–build=BUILD 指定软件包安装的系统平台.
–host=HOST 指定软件运行的系统平台.
–target=GARGET 指定软件面向的系统平台
–disable-FEATURE 提供为大型选项的编译时配置
–enable-FEATURE[=ARG] 提供了一些默认被禁止的特性
–enable-FEATURE=no 同–disable-FEATURE
–with-PACKAGE[=ARG] 使用已有软件包和库
–with-PACKAGE=no –without-PACKAGE同义
–without-PACKAGE 禁止软件包与系统已有的软件包交互
–x-includes=DIR –with-PACKAGE的一个特例
–x-libraries=DIR 向configure脚本指明包含X11库的目录

在运行 configure 时收集了系统的信息,用户可以在 configure 命令中对其进行方便地配置。

在 ./configure 的自定义参数有两种,一种是开关式(–enable-XXX 或 –disable-XXX),另一种是开放式,即后面要填入一串字符(–with-XXX=yyyy)参数。

如何使用产生的 Makefile 文件

执行 configure 脚本文件所产生的 Makefile 文件有几个预定的选项可供使用:

  • make all:产生设定的目标,即生成所有的可执行文件。使用 make 也可以达到此目的。
  • make clean:删除之前编译时生成的可执行文件及目标文件(形如 *.o 的中间文件)。
  • make distclean:除了删除可执行文件和目标文件以外,把 configure 所产生的 Makefile 文件也清除掉。通常在发布软件前执行该命令。
  • make install:将使用 make all 或 make 命令产生的可执行文件以软件的形式安装到系统中。若使用 bin_PROGRAMS 宏,程序将会被安装到 /usr/local/bin 下,否则安装到预定义的目录下。
  • make dist:将程序和相关的文档包装为一个压缩文档以供发布。执行完该命令,在当前目录下会产生一个名为 PACKAGE-VERSION.tar.gz 的文件。PACKAGE 和 VERSION 这两个参数是来自 configure.in configure.ac 文件中的 AM_INIT_AUTOMAKE(PACKAGE,VERSION)。如在上个例子中执行 make dist 命令,会产生名为 “hello-1.0.tar.gz” 的文件。
  • make distcheck:与 make dist 类似,但是加入了检查包装以后的压缩文件是否正常。

按照以上步骤操作完毕,例子在执行 dist 相关命令时报错:

报错信息
【rx 例子正确执行】