Настроить параметр "--prefix" для кросс-компиляции

Какой путь я должен пройти к --prefix опция при выполнении кросс-компиляции: я должен указать путь на моей машине сборки или путь на целевой платформе?

Предположим, я встроил код в /home/me/arm/build/target_fs/usrпосле этого я копирую файлы на свою целевую платформу, где они будут расположены по адресу /usr, Должен ли я использовать --prefix=/home/me/arm/build/target_fs/usr или просто --prefix=/usr а потом make install DESTDIR=/home/me/arm/build/target_fs?

Я думал, что --prefix это не путь для сборки, а путь для работающей среды (то есть путь на целевой платформе). Ответы здесь заставляют меня думать, что я прав. Но есть много страниц (например, кросс-компиляция FFmpeg для Raspbian: --prefix=/my/path/were/i/keep/built/) где люди используют путь на сборке машины для --prefix, Так что я в замешательстве.

2 ответа

Решение

Да, вы правы, --prefix - путь к рабочей среде. Просто используйте --prefix=/usr. Вы можете проверить, в какой путь к папке команда make install установит ваш бинарный файл, установив в DESTDIR. Например, если вы используете --prefix = / usr и производите установку DESTDIR = / home / me / arm / build / target_fs, тогда двоичные файлы будут установлены в папку /home/me/arm/build/target_fs/usr. И если вы просто запустите make install, тогда бинарный файл будет установлен в вашем префиксе, т.е. в "/ usr".

Поскольку вы выполняете кросс-компиляцию, я думаю, что не имеет значения, какой префикс вы используете, потому что в любом случае вы будете устанавливать в DESTDIR, а затем копировать двоичные файлы вручную в свою цель.

Как вы можете найти:

--prefix = dirname Укажите каталог установки верхнего уровня. Это рекомендуемый способ установки инструментов в каталог, отличный от каталога по умолчанию. Каталог установки верхнего уровня по умолчанию - / usr / local.

Насколько я понимаю, вы пытаетесь скомпилировать компилятор для какой-то цели.

В этом случае prefix будет указывать каталог, когда компилятор будет установлен после make install Команда на сборке машины. После этого вы можете взять компилятор там.

, Должен ли я использовать --prefix=/home/me/arm/build/target_fs/usr или просто --prefix=/usr, а затем выполнить установку DESTDIR=/home/me/arm/build/target_fs?

В твоем случае prefix Команда не имеет смысла. Потому что вы копируете двоичные файлы руками.

Также вы можете найти всю другую информацию на официальном сайте GCC: https://gcc.gnu.org/install/finalinstall.html

Другие вопросы по тегам