Кросс-компиляция: как установить один префикс и развернуть с другим префиксом?
Я пытаюсь перекрестно скомпилировать некоторые приложения для альтернативной архитектуры.
Моя типичная процедура выглядит следующим образом:
- Загрузка и распаковка источника в /var/source
- ./configure --prefix =/var/install CC = [my-cross-compiler-gcc]
- сделать
- make install
Это работает как ожидалось: мое приложение установлено в /var/install.
Однако, когда я развертываю это приложение на своей альтернативной архитектуре, я не хочу, чтобы он был развернут в /var/install. Я просто хочу, чтобы он был установлен в/как обычно.
Я могу скопировать его в /, однако само приложение все еще пытается заглянуть внутрь /var/install для различных настроек по умолчанию.
Я хочу скомпилировать и установить программное обеспечение в моей системе x86, но когда я развертываю его на альтернативной архитектуре, я хочу, чтобы он был как если бы я установил его в /, а не в /var/install.
Есть ли способ выполнить то, что я пытаюсь сделать?
Ответы
Ответ 1
Если я правильно понял, /var/install
в вашей системе x86 будет /
в вашей альтернативной архитектуре.
Чтобы решить вашу проблему, вам необходимо изменить следующий шаг:
-
configure, безусловно, сделает некоторые sed в файле, поэтому вам нужно указать последнее место
./configure --prefix=/ CC=[my-cross-compiler-gcc]
-
makefile, созданный automake, поддерживает переменную DESTDIR, которая добавляется к пути установки:
make DESTDIR=/var/install install
Ответ 2
У меня была аналогичная проблема, но я был кросс-компиляцией и хотел установить в корневой каталог моего устройства. В этом случае я указал:
make install DESTDIR=<path/to/rootfs>