DESTDIR和PRE的PRE

时间:2012-07-03 08:49:48

标签: c linux bash makefile configure

我正在尝试将软件安装到特定目录。我找到了几种方法,但不确定它们之间有什么区别。

  1. ./configure --prefix=***
  2. make install DESTDIR=***
  3. make install prefix=***
  4. 我对这三者的功能感到困惑。他们是否实现了同样的目标?

3 个答案:

答案 0 :(得分:156)

  

./configure --prefix=***

Number 1 确定软件包安装时的位置,以及运行时查找其关联文件的位置。如果您只是编译在单个主机上使用的东西,那么您应该使用它。


  

make install DESTDIR=***

Number 2 用于安装到临时目录,该目录不是运行包的位置。例如,在构建deb包时使用它。构建软件包的人实际上并没有将所有内容安装到自己系统的最终位置。他可能已经安装了不同的版本并且不想打扰它,或者他甚至可能不是root用户。所以他用

./configure --prefix=/usr

所以程序预计会在/usr运行时安装,然后

make install DESTDIR=debian/tmp

实际创建目录结构。


  

make install prefix=***

Number 3 会将其安装到其他地方,但不会像DESTDIR=/foo/bar/baz那样创建所有目录。它通常用于GNU stow via

./configure --prefix=/usr/local && make && sudo make install prefix=/usr/local/stow/foo

,它会在/usr/local/stow/foo/bin中安装二进制文件。相比之下,

make install DESTDIR=/usr/local/stow/foo

会在/usr/local/stow/foo/usr/local/bin中安装二进制文件。

答案 1 :(得分:1)

这可以帮助说明使用DESTDIR--prefix(来自here):

  

使用--prefix和DESTDIR进行多次安装:

     

在配置时为每个构建指定不同的--prefix location /选项。例如:

untar petsc tar ball
./configure --prefix=/opt/petsc/petsc-3.9.0-mpich --with-mpi-dir=/opt/mpich
make
make install DESTDIR=/tmp/petsc-pkg
untar petsc tar ball
./configure --prefix=/opt/petsc/petsc-3.9.0-openmpi --with-mpi-dir=/opt/openmpi
make
make install DESTDIR=/tmp/petsc-pkg

答案 2 :(得分:0)

来自openssl/INSTALL

  

想要为标准配置库的软件包构建器   位置,但将软件包安装在其他位置,以便   它可以轻松包装,可以使用

$ make INSTALL_PREFIX=/tmp/package-root install
     

(或指定“ --install_prefix = / tmp / package-root”作为配置   选项)。指定的前缀将添加到所有前缀   安装目标文件名。

这是非标准的,但在某些其他程序中使用了INSTALL_PREFIX。

这适用于1.1.x之前的OpenSSL版本。 OpenSSL 1.1.x和更高版本能够识别通常的DESTDIR