c - DESTDIR 和 PREFIX 的 make

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

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

我对这三个的功能感到困惑。他们是否实现了相同的目标?

最佳答案

./configure --prefix=***

数字 1 决定了软件包在安装时的去向,以及在运行时查找相关文件的位置。如果您只是编译某些东西以在单个主机上使用,那么您应该使用它。


make install DESTDIR=***

数字 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 中安装二进制文件。

https://stackoverflow.com/questions/11307465/

相关文章:

python - Django 的嵌套 Meta 类是如何工作的?

c - 在 Linux 中启动 GDB 时如何传递命令行参数?

python - 检查一个单词是否在 Python 中的字符串中

linux - 如何在 shell 变量中获取网页的内容?

android - Eclipse Android 插件 -- libncurses.so.5

python - 如何在 Django 中过滤 DateTimeField 的日期?

python - 如何从外部访问本地 Django 网络服务器

linux - 如何管道或重定向 curl -v 的输出?

linux - 如何在 vi 编辑器中删除选定的文本

Python 请求 - 无连接适配器