Кросс-компиляция из под Linux x64 для Linux x32

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Leonius_Bad
новенький
Сообщения: 51
Зарегистрирован: 29.11.2012 19:18:07

Сообщение Leonius_Bad »

wavebvg писал(а):[code]ld: warning: ./link.res contains output sections; did you forget -T?

Помните, если у Вас Network Manager или PulseAudio, то наличие 32-битных библиотек может свести это программы с ума. Поэтому лучше все делать так, чтобы система не находила "левые" 32-битные библиотеки (я первый раз тупо копировал с arm и x86 системы и потом долго вычищал). Идеальный вариант, если кросскомпильные библиотеки Вы поставите через менеджер пакетов, но там слишком много заморочек (зато они сами будут обновляться вместе с системой).

Весьма важное примечание, спасибо.

Верно ли я понял, что данные библиотеки можно просто скопировать с x86 системы и сделать на них сим.ссылки? При таком раскладе ничего не полетит?
Какие еще варианты, помимо этого? Хотелось бы чуть подробней про установку через менеджер пакетов - разве при такой установке система не найдет эти самые "левые" пакеты?

В данный момент имею уже аналогичный 32 битный линукс на виртуалке=)) Тут же разобраться просто для расширения кругозора хочется.
wavebvg
постоялец
Сообщения: 355
Зарегистрирован: 28.02.2008 03:57:35

Сообщение wavebvg »

Leonius_Bad писал(а):Верно ли я понял, что данные библиотеки можно просто скопировать с x86 системы и сделать на них сим.ссылки? При таком раскладе ничего не полетит?
Какие еще варианты, помимо этого? Хотелось бы чуть подробней про установку через менеджер пакетов - разве при такой установке система не найдет эти самые "левые" пакеты?

В данный момент имею уже аналогичный 32 битный линукс на виртуалке=)) Тут же разобраться просто для расширения кругозора хочется.

Можете, но системные файлы управляются менеджером пакетов, поэтому копировать и создавать ссылки с системых каталогах - это плохой тон.
А вот разместить каталог с библиотеками отдельно и прописать пути в fpc.cfg - это куда надежнее и решает часть проблем с миграцией на новую систему (новый каталог => новые пути в конфиге => пересборка кросскомпилятора => профит).
MysticCoder
постоялец
Сообщения: 154
Зарегистрирован: 14.09.2013 00:20:28

Сообщение MysticCoder »

Leonius_Bad писал(а):
wavebvg писал(а):
Leonius_Bad писал(а):http://wiki.freepascal.org/Cross_compil ... Linux_i386
Или я совсем не там смотрю?

Да, этого вполне достаточно, чтобы все прекрасно собралось.


Возможно, мы друг друга недопоняли.
Я именно по такой инструкции всё и делал (она же аналогична инструкции из шапки), в итоге получая вышеуказанную ошибку.

Прописал в /etc/fpc.cfg аналогичные пути для своих библиотек:

Код: Выделить всё

# path to the gcclib
#ifdef cpui386
-Fl/usr/lib/gcc/i686-linux-gnu/4.8
-Fl/usr/lib/i386-linux-gnu
-Fl/lib/i386-linux-gnu
#endif
#ifdef cpux86_64
-Fl/usr/lib/gcc/x86_64-linux-gnu/4.8
-Fl/usr/lib/x86_64-linux-gnu
-Fl/lib/x86_64-linux-gnu
#endif

Никакого эффекта. Как выдавало ту злосчастную ошибку, так и выдает. Что еще-то не так?:( Или не там прописал? Не те прописал?

Тайфун не хочу, хочется последний лазарь всё же, да и разобраться с этим уже некое дело принципа=)


У меня в ubuntu либы компилировались в /usr/local/...
я просто копировал строки вида -Fl/usr/lib/gcc/x86_64-linux-gnu/4.8 ниже и приводил их к виду -Fl/usr/local/lib/gcc/x86_64-linux-gnu/4.8, только пути стандартные с $FPCVERSION $CPUTARGET, после этого либы норм находились
Аватара пользователя
Cheb
энтузиаст
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34
Контактная информация:

Сообщение Cheb »

правда я под винду не выполняю кросскомпиляции, пока причин не было

Это-то как раз как два пальца об асфальт. Виндовый фпц ставится под вайном, и потом собираешь, вызывая wine <путь>ppc386. Я первые годы так свой игровой движок строил, из под линукса.
Leonius_Bad
новенький
Сообщения: 51
Зарегистрирован: 29.11.2012 19:18:07

Сообщение Leonius_Bad »

Я таки проделал все шаги из вики.
Установил пакет libv6:i386 и библиотеки упали в /usr/lib32. Ничего в fpc.cfg не прописывал, и так собралось.

Вопрос: как теперь заставить Lazarus таки уже собирать под x32? Ибо, я либо сделал что-то не то, и нужно было таки чего прописать, либо же что-то не доделал, но при выборе целевой платформы у проекта - лазарь всё равно говорит, что fpc не поддерживает i386...=((

В вики последним идет "That's it. Edit your /etc/fpc.cfg file if needed. ", что именно там поправить?:)

Добавлено спустя 36 минут 7 секунд:
Скопировал получившиеся модули и компилятор(ppcross386) из /usr/local/lib/fpc/2.6.4/ в /usr/lib/fpc/2.6.4/ (там, где были модули для х64).
fpc.cfg выглядит корректным, все пути же идентичны (с учетом переменной $FPCTARGET).

Не помогло=\
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Leonius_Bad, а в настройках проекта не пробовали платформу выставить на нужную Вам?
Leonius_Bad
новенький
Сообщения: 51
Зарегистрирован: 29.11.2012 19:18:07

Сообщение Leonius_Bad »

Лекс Айрин писал(а):Leonius_Bad, а в настройках проекта не пробовали платформу выставить на нужную Вам?

пробовал. Сразу после применения настроек пишет "/usr/bin/fpc не поддерживает i386" ...=(
Ответить