我正在尝试将软件安装到特定目录。我发现了几种方法,但不确定它们之间有什么区别。
./configure --prefix=***
make install DESTDIR=***
make install prefix=***
我对这三个功能感到困惑。他们是否达到了相同的目标?
数字1 决定了程序包在安装时的运行位置以及运行时将在何处查找其关联文件。如果您只是编译要在单个主机上使用的东西,则应该使用它。
2号 是用于安装到一个临时目录,而不是从中运行该软件包。例如,在构建deb软件包时使用它。构建软件包的人实际上并没有将所有内容安装到自己系统上的最终位置。他可能已经安装了其他版本,不想打扰它,甚至可能不是root用户。所以他用
deb
./configure --prefix=/usr
因此该程序有望在/usr运行时安装在其中,然后
/usr
make install DESTDIR=debian/tmp
实际创建目录结构。
3号 将其安装到其他位置,但不会像创建那样创建所有目录DESTDIR=/foo/bar/baz。它通常与GNU存放通过
DESTDIR=/foo/bar/baz
./configure --prefix=/usr/local && make && sudo make install prefix=/usr/local/stow/foo
,它将在中安装二进制文件/usr/local/stow/foo/bin。通过对比,
/usr/local/stow/foo/bin
make install DESTDIR=/usr/local/stow/foo
会在中安装二进制文件/usr/local/stow/foo/usr/local/bin。
/usr/local/stow/foo/usr/local/bin