DESTDIR和PREFIX的

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

  1. ./configure --prefix=***
  2. make install --prefix=***
  3. make install DESTDIR=***
  4. make install prefix=***

我对这四项function感到困惑。 他们是否达到了相同的目标?

Solutions Collecting From Web of "DESTDIR和PREFIX的"

编号1确定软件包安装的位置,以及在运行时将查找关联文件的位置。 这是你应该使用,如果你只是编译东西在一个单一的主机上使用。


就我所知, 数字2只是一个错误。


编号3用于安装到临时目录,该目录不在运行包的位置。 例如,在构建deb包时使用。 构建软件包的人实际上并没有把所有东西都安装到自己系统的最后一个地方。 他可能已经安装了一个不同的版本,不想打扰它,或者他甚至可能不是根。 所以他用

 ./configure --prefix=/usr 

所以程序将在运行时期望安装在/usr

 make install DESTDIR=debian/tmp 

实际上创建目录结构。


4号将安装到不同的地方,但不创建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安装二进制文件。 这可能是第2号实际上应该是。