在使用"./configure"时,"--prefix"参数的确切作用是什么?

所以我刚刚有一个简单的问题,可能会让我看起来很傻,但我正在学习。
当我做一个
./configure --prefix/usr/bin/

前缀是做什么的? 这只是将软件包安装到那个位置吗?

而且,回答可以更详细地解释复杂的安装过程,并详细说明前缀和相关选项。

如果我要运行apt-get install命令,如何使用前缀将其安装到特定位置?

我也见过

 PREFIX=/tmp/installdir make


 PREFIX=/tmp/installdir make install

如果在./configure中调用了前缀,为什么在这两个示例中它总是被创建?
谢谢您的提前帮助!

一些信息在这里:GNU编码标准:目录变量 - steeldriver
请检查更新的答案。 - luv.preet
1这个链接可以帮助你更多:http://www.freetds.org/userguide/config.htm - luv.preet
评论者们:这是关于安装软件的问题。它已经有三个离题的关闭投票,理由是“与Ubuntu无关”。如果关闭此问题与任何 实际 站点 政策一致,请留下评论。否则,即使被关闭,这个问题很可能会重新开放。 - Eliah Kagan
2个回答

当你使用make installsudo make install安装软件时,不同的文件会被放置在不同的目录中。提供用户运行命令的可执行文件通常放在bin目录中,库文件通常放在lib目录中,手册页通常放在man目录中,等等。
当你运行./configure时,--prefix选项允许你指定这些目录的位置。它被称为--prefix是因为它允许你给出在构建的程序或库文件的每个目录路径中出现的前缀。大多数configure脚本都支持--prefix,如果省略它并只运行./configure,通常相当于./configure --prefix=/usr/local
为了更全面地回答这个问题,我复制了我的回答如何在Unix & Linux上全局安装tar文件?(来自Unix & Linux)的两个部分,专门解决了这个问题。

配置您的构建

当您有需要通过运行./configuremake编译的源代码时,通常会使用make install(或sudo make install)进行安装。这将把文件从构建目录复制到安装位置。当您安装的东西提供可执行命令时,这些可执行文件通常会被复制到一个在$PATH中的目录中,或者您应该考虑将其添加到$PATH中。

尽管构建和安装软件通常只需简单地运行./configuremake,有时还需要运行make checkmake test,然后运行make installsudo make install,但有时您可能希望向configure脚本传递选项来配置构建过程。特别是,正如pfnuesel所说的那样,这是您配置软件将要安装的位置的方法。尽管make install步骤实际上安装了软件,但通常在./configure步骤中确定了所有内容将被安装的位置。

最常见的选项是--prefix。当您不指定configure要使用的内容时,默认前缀通常是/usr/local。(偶尔,某些程序或库的源代码默认为其他前缀。幸运的是,这种情况很少见。)

因此,./configure通常等同于./configure --prefix=/usr/local。要在您的主目录中安装软件,您可以使用./configure --prefix=/home/galahad(如果/home/galahad是您的主目录),或者使用--prefix="$HOME"。然后,当然您还必须使用make来构建和安装软件。我应该说,并非以源代码形式分发的所有软件都是按照这种方式构建的。您应该始终查找提取的源代码存档中的文档。

--prefix的含义

当您运行./configure --prefix=目录时,您表示软件应该安装在目录目录下。但是,这很少会将松散的文件放在目录中。相反,它会将具有不同用途的文件放置在目录的不同子目录中。如果这些子目录不存在,它会创建它们。

可执行文件通常放在目录/bin中,但如果它们通常用于系统管理,它们可能会放在目录/sbin中,或者(现在很少见)放在目录/games中,如果它们是游戏的话。库文件放在目录/lib或类似命名的目录中,如目录/lib32。头文件放在目录/include中。手册页放在目录/man中。软件使用的数据文件放在目录


它告诉我们配置当前软件包或软件所需的事物的位置。

例如,在一个简单的情况下,它可以告诉我们ssl库的位置:

--with-libssh2=/usr/local  #used in configuring nagios

它还会告诉你哪些软件包不需要配置,以便根据你的系统进行适当的程序编译。
--disable-shared  # used in configuring nagios
--disable-link-balancer  # used in configuring Firehol

这些只是额外选项,用于使编译适合您的系统。 这是我认为的。如果有其他情况,请纠正我。 --prefix=PREFIX选项将架构无关的文件安装在PREFIX中。当您运行make install命令时,库文件将放置在PREFIX/lib目录中,可执行文件将放置在PREFIX/bin目录中,依此类推。
如果没有将此参数传递给configure命令,则默认值为/usr/local

  • 相关问题