我通常会用./configure来构建一些东西。它看起来像是由工具生成的脚本。今天,我意识到我不知道那是什么。
这是什么?这个脚本的作用是什么,是谁制作的?我怎么才能做出这样的东西呢?
发布于 2011-09-12 17:30:57
每个系统都是不同的。例如,有不同的编译器和编译器版本,您系统的工具可能支持某些标志(或不支持),您可能已安装或未安装某些库,等等。在计算机上有许多不同的东西可能会影响如何编译项目。
configure脚本尝试找出所有这些情况,并在未满足先决条件时(例如,当缺少编译器或库时)发出警告。然后它会生成一个特定于您的系统的Makefile,只需输入make就可以(希望)在您的系统上正确地构建该项目。
在configure之前,我们必须手动调优Makefile(通常可调的部分被偏置到一个单独的Makefile中)。这意味着您需要对系统有更多的了解,并且经常需要修改Makefile。这是一个很大的障碍,特别是因为几乎每个项目都是以不同的方式完成的。GNU autoconf和automake (它们解析Makefile.am和configure.ac文件以生成Makefile.in和configure脚本)在这里真正简化了事情(特别是如果您正在做一些奇特的事情,如交叉编译,几乎没有项目愿意添加对它们的支持;例如,如果您以一种干净的方式做autoconf/automake,那么您就可以免费获得交叉编译支持)。
发布于 2011-09-12 17:28:59
它通常是由GNU autoconf创建的脚本。其他构建工具也可能使用相同的名称。Autoconf是一个相当复杂的工具,但在web上有几个简短的教程。我喜欢这个:http://www.edwardrosten.com/code/autoconf/index.html
发布于 2011-09-12 17:30:15
GNU Autoconf Autoconf基于configure.ac文件的内容生成配置脚本,该文件描述了特定的源代码主体。在运行配置脚本时,它会扫描构建环境并生成一个从属config.status脚本,该脚本又会将其他输入文件(最常见的是Makefile.in )转换为适合该构建环境的输出文件(Makefile)。最后,make程序使用Makefile从源代码生成可执行程序。
http://en.wikipedia.org/wiki/GNU_build_system
https://stackoverflow.com/questions/7385747
复制相似问题