LINUX.ORG.RU

Кросс-сборка gcc с другими host и target

 , ,


0

1

Привет!

Я пытаюсь собрать gcc 4.8.2 с --host и --target отличными от --build (конкретно — host и target = «arm-unknown-linux-gnueabi», build = «x86_64-pc-linux-gnu»). Система - gentoo.

gmp, mpfr и mpc в build-системе есть и отлично работают, но, тем не менее, во время ./configure gcc пытается устроить self-test и слинковать тестовый бинарник с вышеозначенными библиотеками, но при этом использует кросс-компилирующий arm-unknown-linux-gnueabi-gcc, который очень удивляется библиотекам от x86_64 и ожидаемо говорит «/usr/lib/libmpc.so: file not recognized», после чего сборка заканчивается.

Как я посмотрел (ldd `which gcc`), скомпилированные компиляторы от этих библиотек не зависят.

Существует ли какой-нибудь способ сказать gcc, что он неправ и для тестирования системы сборки стоит использовать другой компилятор?

config.log: http://pastebin.com/J9e2KBQy

Используй crosstool-ng. Стандартное средство сборки кросс тулчейнов, умеет выкачивать нужные зависимости. Есть профиль для arm-unknown-linux-gnueabi.

mtk ()
Ответ на: комментарий от mtk

Но у меня уже есть тулчейн с host=x86_64-pc-linux-gnu и target=arm-unknown-linux-gnueabi, зачем мне еще один? Мне нужно собрать gcc, который будет работать ARM и собирать под ARM.

Arrest ()
Ответ на: комментарий от Arrest

crosstool-NG позволяет собрать тулчейн с любой комбинацией build-host-target, в том числе т.н. canadian build (build!=host!=target).

mtk ()

в ./configure --help нету какой-нибудь опции, отключающей эти тесты?

Harald ★★★★★ ()
Ответ на: комментарий от mtk

Вспомнил, то что тебе нужно называется cross-native

mtk ()
Ответ на: комментарий от Arrest

который будет работать ARM и собирать под ARM.

В смысле «будет работать _на_ ARM» ? Вообще непонятно, в чём проблема тогда.

В общем, вот тут кое-что собрано, если речь про сборку для arm не на arm: http://code.google.com/p/starterkit-org/w/list
В том числе и crosstool-ng упоминается.

AS ★★★★★ ()

Вообще-то, такие вещи проще собирать в чруте или через distcc. Дистростроители так и делают. Тесты отключать не рекомендуется. Более того, если тулчейн собирается не только для себя, надо провести бутстраппинг.

mtk ()
Ответ на: комментарий от mtk

Я спросил в IRC-конфе crosstool-ng - автор утверждает, что он не может делать cross-native.

Arrest ()
Ответ на: комментарий от Arrest

Canadian build поддерживается, а cross-native — нет.

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

anonymous ()
Ответ на: комментарий от punya

Это решение скорее для мейнтейнеров (засорять хост, править ебилды). Достаточно просто chroot с qemu-static-arm через binfmt.

mtk ()
Ответ на: комментарий от mtk

ничего на хосте не засоряется. это и есть chroot, static-arm и qemu

punya ★★ ()
Ответ на: комментарий от punya

Да, я забыл что все системы с gentoo похожи на свалку.

mtk ()

позавчера собирал toolchain для avr.... скажи, а ты перед сборкой gcc собрал binutils для своего arm?

irton ★★★★★ ()
Ответ на: комментарий от punya

В том решении предлагают патчить qemu и gawk. Более того, предполагается что в чруте тоже gentoo.

mtk ()
Ответ на: комментарий от irton

Последовательность сборки кросскомпилера:

  • Собрать binutils.
  • Собрать stage1 gcc. Он не сможет линковать, так как нету libc.
  • Собрать libc этим gcc.
  • Собрать рабочий stage2 gcc.
mtk ()
Ответ на: комментарий от mtk

я в курсе, потому и спрашиваю топикстартера, он не забыл сделать binutils?

странно, применительно к avr сборку stage2 нигде не увидел, читал несколько рецептов сборки и сравнивал.

irton ★★★★★ ()
Ответ на: комментарий от mtk

gawk патчится внутри чрута. патч на qemu ты сам юзаешь. без него ты не получишь qemu-static-arm.

punya ★★ ()
configure:5619: checking for the correct version of the gmp/mpfr/mpc libraries

configure намекает, что это обязательные зависимости. Собери их для целевой платформы.

cc1: warning: include location "/usr/include" is unsafe for cross-compilation
Компилятор СКРОМНО намекает, что это бардак, а не кросскомпиляция. Здесь надо постичь магию --sysroot-подобных параметров configure.

fopen ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.