当你使用
make install
或
sudo make install
安装软件时,不同的文件会被放置在不同的目录中。提供用户运行命令的可执行文件通常放在
bin
目录中,库文件通常放在
lib
目录中,手册页通常放在
man
目录中,等等。
当你运行
./configure
时,
--prefix
选项允许你指定这些目录的位置。它被称为
--prefix
是因为它允许你给出在构建的程序或库文件的每个目录路径中出现的前缀。大多数
configure
脚本都支持
--prefix
,如果省略它并只运行
./configure
,通常相当于
./configure --prefix=/usr/local
。
为了更全面地回答这个问题,我复制了
我的回答和
如何在Unix & Linux上全局安装tar文件?(来自
Unix & Linux)的两个部分,专门解决了这个问题。
配置您的构建
当您有需要通过运行./configure
和make
编译的源代码时,通常会使用make install
(或sudo make install
)进行安装。这将把文件从构建目录复制到安装位置。当您安装的东西提供可执行命令时,这些可执行文件通常会被复制到一个在$PATH
中的目录中,或者您应该考虑将其添加到$PATH
中。
尽管构建和安装软件通常只需简单地运行./configure
、make
,有时还需要运行make check
或make test
,然后运行make install
或sudo 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
中。软件使用的数据文件放在目录