2010-03-27 169 views

回答

60

通常,当运行配置脚本:

  • 查了一些关于机器 细节上的软件将是安装 。该脚本会检查您的系统上的大量依赖关系 。 对于正确使用 的特定软件,可能需要在您的 机器上存在大量 机器。如果系统上缺少任何主要需求,那么配置脚本exit将不能继续安装,直到获得所需的内容为止。

  • 创建要在下一步中使用的Makefile

+3

从来不知道makefile是通过configure之前创建的:) – Mask 2010-03-27 14:20:12

+2

它还提供了一个接口来配置(恰当)编译选项。 './configure --help'会(通常?)给出可用选项的列表。 – intuited 2010-03-27 14:38:30

+0

为生成文件详细投票 – jayatubi 2015-03-26 09:05:04

5

配置脚本从模板建立Makefile文件,在东西替代等,其中要安装代码,需要什么样的定义,所使用的(C,C++,Fortran语言,...)编译器建立该计划。从理论上讲,它可以一步完成,除了有很多不同的配置可能会更容易分阶段完成。 (例如,如果用可用的多核机器构建大型程序,则可能需要指定发生一定数量的并行编译,这不是关于如何配置的问题。)

32

它运行通常会生成makefile和“configure.h”的脚本。

该脚本写入了作为宏语言的lanugage“m4”。顶级宏可以在autoconf.ac或(在旧系统中)autoconf.in中找到。这些扩展包含较低级别的宏,然后扩展为实际测试,这些测试创建小程序或任务以检查您拥有的系统类型。

例如AC_CHECK_HEADER([myheader.h],...)可能会产生微量的C程序,如:

#include "myheader.h" 
int main(int argc, char** argv) { 
    return 0; 
} 

如果程序编译,检查被认为是 “合格”,否则 “失败”。 。这种检查的状态通常会反映在config.h文件中。在路过检查,你可能会发现config.h中,看起来像一条线:在一个失败的试验

#define HAVE_MYHEADER_H 1 

同时,它可能看起来像

#define HAVE_MYHEADER_H 0 

当配置与autoconf的工作AM_INIT_AUTOMAKE宏,如果包含测试结果的变量被导出,Makefile也可以引用测试结果。因此,如果需要的库位于几个不同的典型位置,或者使用标准工具(如tar,ar等)的“某些工作”语法不同,或者首选工具不可用,则Makefile将仍然能够使用不同的库位置,不同的工具语法或一组不同的工具正确构建项目。

因此,在处理Autotools项目(configure/make/make install)时,Makefile实际上并不包含构建项目所需的所有内容,它是从Makefile.in模板生成的,以便在键入“配置”。

+0

我注意到这些'configure'文件非常庞大,它们是手动编写的吗? – Mask 2010-03-28 03:43:33

+10

不,配置脚本是放置在configure.ac文件(或旧系统的configure.in)文件中的指令的扩展(也使用m4语言)。运行autoconf将从configure.ac生成配置脚本,但有时需要修补宏库。当你需要这样做时,运行aclocal,它会尝试验证所有的宏是否被正确定义(并可用于下一次autoconf执行)。 – 2010-03-29 04:51:25

+0

@Edwin Buck:优秀的答案! – Lazer 2010-05-19 19:34:45

相关问题