LINUX.ORG.RU

Установка тулчейнов для кросскомпиляции (Gentoo)

 ,


1

2

Доброго времени суток, уважаемые!

Прошу разъяснить где я допускаю косяки с установкой.

  • Заинсталлил систему с нуля
  • Установил gcc4.8.2, пресобрал систему этой версией
  • Удалил старую версию gcc 4.7.*

Далее накатывал KDE, собирал Qt5 и QtCreator 3.0.0 - все получалось супер. Но вот понадобилось поставить кросскомпиляторы для i686 и x86_64. Делаю все по разрозненным мануалам:

emerge crossdev
mkdir /usr/local/portage
echo 'PORTDIR_OVERLAY="/usr/local/portage"' >> /etc/portage/make.conf
time crossdev -t i686-pc-mingw32 --ov-output /usr/local/portage i686-pc-mingw32
time crossdev -t x86_64-pc-mingw32 --ov-output /usr/local/portage x86_64-pc-mingw32

О5 же все становится без ошибок. Вызываю gcc-config -l и вижу список из трех компиляторов.

Но ... gcc-config 1 - якобы успешно переключает меня на первый (i686), а когда вызываю gcc-config -с все равно вижу текущим основной линуховый.

Есть подозрение, что я недопонимаю, как происходит выбор компилятора для кросскомпиляции. Растолкуйте пожалуйста, ибо манипуляция с флагами CC CPP CXX много счтаться не приностит. К примеру собираются разделяемые библиотеки в формате .so, хотя по идее должны быть .dll для кросстулчейнов.

И еще вопрос, может в нем собака зарылась. При установке тулчейнов выскакивает предупреждение:

!!! WARNING - Cannot auto-configure CHOST x86_64-pc-mingw32
!!! You should edit /usr/x86_64-pc-mingw32/etc/portage/make.conf
!!! by hand to complete your configuration
Где почитать что именно править, не нашел. Вобщем ай нид хелп.



Последнее исправление: Majestio (всего исправлений: 1)
Ответ на: комментарий от wakuwaku

Если не составит труда, опиши свой процесс сборки, к примеру, zlib (shared) для i686-pc-mingw32 (куда разворачиваешь, как переключаешься на нужный тулчейн, как конфигуришь и инсталлишь).Просто, чтобы понять алгоритм последующего использования кросскомпилятора правильно.

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

Кстати ICU собралось без проблем. Конфигурирование странное немного - нужно сперва собрать (или просто сконфигурировать?) нативную версию, потом для i686 указать --host=i686-pc-mingw --with-cross-build=<каталог c отконфигурированной нативной сборкой>. И все собирается и инсталится «на ура».

Значит вопрос получается другой: как собирать либы, в которых --host при конфигурировании не предусмотрен.

zlib нужно :(

Majestio
() автор топика
Ответ на: комментарий от x0r

Я не пробовал, но один из разработчиков(Alon Bar-Lev) говорил что mingw64 работает нормально, а с mingw32 - проблемы, конкретнее не скажу.

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

Не сложно - я это все прочел. Но лыжи все равно не едут - конфигуратор zlib напрочь игнорирует SYSROOT и и ему подобное. Если вы осилили и у вас получилось получить zlib1.dll - расскажите последовательность действий. Меня только это и интересует.

Majestio
() автор топика
Ответ на: комментарий от Pinkbyte

Попробовал собрать openssl-1.0.1f, результат одинаков и для i686-pc-mingw32 и для x86_64-pc-mingw32 - собирается частично. Как результат собирает ssleay32.dll, а libeay32.dll нет.

Собирал вот так:

#!/bin/sh
./Configure --prefix=/root/qt/openssl-x32 --cross-compile-prefix=i686-pc-mingw32- no-asm no-zlib no-idea no-mdc2 no-rc5 shared mingw > build.log 2>&1
echo --------------------------------------------------------- >> build.log 2>>&1
make depend >> build.log 2>>&1
echo --------------------------------------------------------- >> build.log 2>>&1
make &>> build.log 2>>&1
echo --------------------------------------------------------- >> build.log 2>>&1
make install >> build.log 2>>&1

Вот полный лог: http://pastebin.com/f4ftKX9h

Majestio
() автор топика
Ответ на: комментарий от Pinkbyte

Вот за этот совет - спасибо! :)

Как-то собрался zlib, но OpenSSL обматерил и вылетел. Но не это главное!

Главное, что из-за собственной невнимательности принял совет wakuwaku за чистую монету (имею ввиду присоветованный им «единственный» мануал). Но только когда попытался использовать i686-pc-mingw32-emerge, полетели предупреждения, и заметил - дока-то эта плесенью покрылась! В самом начале написано - deprecated. Сейчас буду откатываться и начинать с нуля, благо все под VMWare'й крутится. Жаль потраченного времени конечно. Но, как говорят киргизы - се ля ви.

Majestio
() автор топика
Ответ на: комментарий от wakuwaku

Карма + точные советы = это Ванга! :)))

зЫ: zlib+icu+openssl+postgresql на кросскомпиляции победил, Qt 5.0.2. совершенно внезапно стал раком 0_o. Пабидю - отпишусь )))

ЗЫ: По поводу .configure отдельных пакетов - отдельная пачка матоф ... штоп они дома так себе строили! :=[ ] Все потом.

Majestio
() автор топика
26 июня 2015 г.
Ответ на: комментарий от Majestio

На всяк случай, может кому и пригодится ... Давно и уверенно, а главное удобно, работаю с системами кросс-компиляции для Оффтопика x32/x64/shared/static.

Почитать можно тут, или тут.

Ну и основное пожелание/рекомендация: используйте раздельные «копии» Qt для системы, и для разработки. Если вы хотите быть «впереди планеты всей» в плане попробовать в кодинге новую фичу - вовсе не обязательно обновлять вашу систему последними нестабильными версиями библиотек Qt. Заведите в домашнем каталоге отдельное место для разработки, и положите туда отдельную копию(ии) Qt.

Вангую ценные указания гентушников об использовании «crossdev». Пока не будет по факту собранно того, что я показал в своей статье выше, crossdev оставьте себе. То же касается crosstool-ng, да и на сколько я понял, формат PE для x86_64 - там отсутствует в списке вариантов.

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

И еще ... свежая версия Qt5.4.2, в скриптах 5.4.1, лучче поправить - проверено, собирается.

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