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

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

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

  1. Загрузка и разархивирование источника в / var / source
  2. . / Configure --prefix = / var / install CC = [my-cross-compiler-gcc]
  3. make
  4. make install

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

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

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

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

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

Ответы [ 2 ]

13 голосов
/ 21 мая 2011

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

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

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

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

    make DESTDIR=/var/install install

3 голосов
/ 05 марта 2013

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

make install DESTDIR=<path/to/rootfs>
...