在Linux上从源代码(Ubuntu16.04)安装c/c++软件包时,我看到了一个常见的模式:
我理解make
和make install
,我猜configure
基于用户首选项创建了一个Makefile,但我不明白为什么autogen.sh
是必要的。
有人知道那是干什么的吗?
发布于 2018-04-26 13:33:16
步骤:
autogen.sh
脚本生成configure
脚本(使用configure.ac
,使用autoconf)和它需要的任何文件(比如使用自动化从Makefile.am
创建Makefile.in
)。这需要在您的系统上安装自动工具,并且必须在从源代码管理签出项目时运行它(如果没有签入configure
)。下载源tarball的人通常可以跳过这个步骤,因为这个步骤的输出包含在源tarball中。
Note这通常等同于autoreconf --install
。如果没有autogen.sh
文件,那么只运行autoreconf --install
。如果您继承了一个带有autogen.sh
的项目,如果可以使用autoreconf --install
,请考虑删除它。configure
脚本生成构建所需的Makefile
和其他文件。通常,Makefile.in
被用作生成Makefile
的模板( config.h.in
用于生成config.h
)。此过程只使用系统上安装的标准工具,如sed和awk,而不需要安装自动工具。make
命令构建软件。make install
命令安装它。它们被分成不同的步骤,因为它们经常在不同的时间运行。传统上,autogen.sh
步骤是由开发软件的人员运行的,因为他们需要在自己的系统上安装autoconf并对configure.ac
进行更改。最终用户不需要安装自动工具。
由于最终用户更有可能在源代码管理之外检查一个项目,而不是下载源代码版本,这些期望已经发生了一些变化。
发布于 2018-04-26 13:30:38
这仅适用于使用autotools构建链构建的程序/库。它生成由configure
脚本配置的文件。然后,配置脚本填充.in
文件,并从Makefile.am
模板生成Makefile
。它最终可用于编译、链接和安装程序/库。
随着向多平台包的迁移,它正逐渐过时。CMake和更现代的工具链是最先进的。
https://stackoverflow.com/questions/50044091
复制相似问题