【发布时间】:2011-11-15 04:35:18
【问题描述】:
我通常会看到./configure 来构建一些东西。它看起来是由工具生成的脚本。而今天,我意识到我不知道那是什么。
这是什么?这个脚本的作用是什么,是谁做的?我怎样才能做出这样的事情?
【问题讨论】:
我通常会看到./configure 来构建一些东西。它看起来是由工具生成的脚本。而今天,我意识到我不知道那是什么。
这是什么?这个脚本的作用是什么,是谁做的?我怎样才能做出这样的事情?
【问题讨论】:
每个系统都是不同的。例如,有不同的编译器和编译器版本,您系统的工具可能支持(或不支持)某些标志,您可能安装或未安装某些库,等等。pp。有很多 很多在可能影响如何编译项目的计算机上有所不同。
configure 脚本试图找出所有这些事情,并在不满足先决条件时抱怨(例如,当缺少编译器或缺少库时)。然后它会生成一个特定于您的系统的 Makefile,只需键入 make 即可(希望)在您的系统上正确构建项目。
在configure 之前,我们必须手动调整 Makefile(通常可调部分被偏移到单独的 Makefile 中)。这意味着您需要了解很多关于您的系统的信息,并且经常需要修改 Makefile。这是一个很大的障碍,尤其是因为几乎每个项目的做法都不同。 GNU autoconf 和 automake(解析 Makefile.am 和 configure.ac 文件以生成 Makefile.in 和 configure 脚本)在这里确实简化了事情(特别是如果你正在做一些奇特的事情,比如交叉编译几乎没有项目关心添加支持;例如,如果您以干净的方式执行autoconf/automake,那么您将获得免费的交叉编译支持。
【讨论】:
它通常是由 GNU autoconf 创建的脚本。其他构建工具也可能使用相同的名称。 Autoconf 是一个相当复杂的工具,但是网上有几个简短的教程。我喜欢这个:http://www.edwardrosten.com/code/autoconf/index.html
【讨论】:
GNU 自动配置 Autoconf 根据 configure.ac 文件的内容生成一个配置脚本,该文件描述了特定的源代码主体。配置脚本在运行时扫描构建环境并生成一个从属 config.status 脚本,该脚本反过来将其他输入文件和最常见的 Makefile.in 转换为适合该构建环境的输出文件 (Makefile)。最后make程序使用Makefile从源代码生成可执行程序。
【讨论】: