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

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

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

  1. Загрузите и распакуйте исходный код в / var / source
  2. ./configure --prefix = / var / install CC = [my-cross-compiler-gcc]
  3. делать
  4. сделать установку

Это работает, как и ожидалось: мое приложение установлено в /var/install.

Однако когда я развертываю это приложение на своей альтернативной архитектуре, я не хочу, чтобы оно развертывалось в /var/install. Я просто хочу, чтобы он был установлен в / как обычно.

Я могу скопировать его в /, но само приложение все еще пытается заглянуть внутрь / var / install для различных настроек по умолчанию.

Я хочу скомпилировать и установить программное обеспечение в моей системе x86, но когда я разверну его на альтернативной архитектуре, я хочу, чтобы оно было таким, как если бы я установил его в /, а не в /var/install.

Есть ли способ выполнить то, что я пытаюсь сделать?

2 ответа

Решение

Если я правильно понимаю, /var/install на вашей системе x86 будет / на вашей альтернативной архитектуре. Чтобы решить вашу проблему, вам нужно изменить следующий шаг:

  • configure, безусловно, будет делать некоторые sed в файле, поэтому вам нужно указать конечное место

    ./configure --prefix=/ CC=[my-cross-compiler-gcc]

  • makefile, сгенерированный automake, поддерживает переменную DESTDIR, которая добавляется к пути установки:

    make DESTDIR=/var/install install

У меня была похожая проблема, но я выполнял кросс-компиляцию и хотел установить ее в корневой каталог моего устройства. В этом случае я указал:

make install DESTDIR=<path/to/rootfs>
Другие вопросы по тегам