Кросс-компиляция: как установить один префикс и развернуть с другим префиксом?

Я пытаюсь перекрестно скомпилировать некоторые приложения для альтернативной архитектуры.

Моя типичная процедура выглядит следующим образом:

  • Загрузка и распаковка источника в /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>