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.inconfigure.ac 文件中的 AM_INIT_AUTOMAKE(PACKAGE,VERSION)。如在上个例子中执行 make dist 命令,会产生名为 “hello-1.0.tar.gz” 的文件。 - make distcheck:与 make dist 类似,但是加入了检查包装以后的压缩文件是否正常。
按照以上步骤操作完毕,例子在执行 dist 相关命令时报错:
【rx 例子正确执行】