Ответы:
./configure --prefix=***
Номер 1 определяет, куда пойдет пакет при установке и где он будет искать связанные с ним файлы при запуске. Это то, что вам следует использовать, если вы просто компилируете что-то для использования на одном хосте.
make install DESTDIR=***
Номер 2 предназначен для установки во временный каталог, из которого не будет запускаться пакет. Например, это используется при сборке debпакетов. Человек, создающий пакет, на самом деле не устанавливает все на конечное место в своей собственной системе. У него может быть уже установлена другая версия и он не хочет мешать ей, или он может даже не иметь root-права. Поэтому он использует
./configure --prefix=/usr
поэтому программа будет ожидать, что ее установят /usrпри запуске, тогда
make install DESTDIR=debian/tmp
чтобы фактически создать структуру каталогов.
make install prefix=***
Номер 3 собирается установить его в другое место, но не создает все каталоги, как это DESTDIR=/foo/bar/bazбыло бы. Обычно он используется с загрузкой GNU через
./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.
mv usr/local/* . && rmdir usr/local && rmdir usrиспользования prefix=- намного лучше!
DESTDIR=/tmp/foo make install; для проектов на основе cmake мне больше повезло с cmake -DCMAKE_INSTALL_PREFIX=/tmp/test1 -P cmake_install.cmakeустановкой /tmp/foo/{bin,...}; см. пример на github.com/opencv/opencv/issues/11833#issuecomment-401164056 .
DESTDIRи prefixможет быть использовано на make installвместе, то есть make install DESTDIR=/foo/bar/tmp perfix=/local.
Это может помочь проиллюстрировать использование DESTDIRи --prefix( отсюда ):
Множественные установки с использованием --prefix и DESTDIR:
Укажите другое расположение / параметр --prefix для каждой сборки - во время настройки. Например:
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
Из openssl/INSTALL
Создатели пакетов, которые хотят настроить библиотеку для стандартных расположений, но установили пакет в другом месте, чтобы его можно было легко упаковать, могут использовать
$ make INSTALL_PREFIX=/tmp/package-root install(или укажите "--install_prefix = / tmp / package-root" в качестве параметра конфигурации). Указанный префикс будет добавлен ко всем именам файлов цели установки.
Это нестандартно, но INSTALL_PREFIX используется в некоторых других программах.
Это работает для версий OpenSSL до 1.1.x. OpenSSL 1.1.x и выше умеют распознавать обычные DESTDIR.
cmake -DCMAKE_INSTALL_PREFIX=/foo/bar/baz -P cmake_install.cmakeв каталоге сборки.