Компиляция под 32-бита из 64-битной системы

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

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

Linus
новенький
Сообщения: 47
Зарегистрирован: 11.01.2013 22:01:28

Сообщение Linus »

daesher писал(а):Только вопрос: собирается ли ppc386 (с помощью скачанного ppc386)?

ppc386 забрал из debian 6 i386.
daesher писал(а):Возможно - и даже очень вероятно. Если не работают обычные 32-разрядные бинарники, логично, что не будет работать и fpc.

32-битки работают. Для этого ядре все включ.
daesher писал(а):И ещё: идентичны ли сборки ppcx64 и ppc386 (т.е., сделаны ли они с одних исходников)?

FPC собирался из одних исходников.
daesher писал(а):Далее: ppc386, ppcx64 и fpc (или хотя бы ссылки на них) надо разместить в одном каталоге.

ppc386, ppcx64 а так же ссылки размещены в одном месте.

Padre_Mortius писал(а):Может стоит к оригинальной инструкции от разработчиков обратиться?
Там все подробно расписано.

Я как раз все делал по этой инструкции

Padre_Mortius писал(а):P.S. для всяких *buntu для работы с 32-х битными приложениями нужно установить метапакет multiarch

У меня не бубунта, а батя, и все же multiarch есть (понадобился для сборки wine)
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Linus писал(а):вот как на 32-х собирать? не ставить же 32 на виртуаль, только для этого. ИМХО извращение.

Что ещё непонятно? Я же тебе привёл рабочий пример сборки 32 битного бинаря из 64 разрядного линукса. Файлы 32 битного лазаруса лежат на диске, но для сборки программ, запускать его НЕ ОБЯЗАТЕЛЬНО. Ты запускаешь его fpc компилятор и им собираешь. Естественно, в системе должны быть установлены i386 glibc и прочие системные 32 разрядные библиотеки, каталог /lib32 должен быть или должна быть такая символическая ссылка на каталог с 32 разрядными библиотеками. И прочие символические ссылки на библиотеки которые компилятор не может найти тоже по мере необходимости нужно добавлять. У меня же сборка лазарусных программ из коммандной строки работает, почему у тебя она не должна работать?
Linus
новенький
Сообщения: 47
Зарегистрирован: 11.01.2013 22:01:28

Сообщение Linus »

Сквозняк писал(а):
Linus писал(а):вот как на 32-х собирать? не ставить же 32 на виртуаль, только для этого. ИМХО извращение.

Что ещё непонятно? Я же тебе привёл рабочий пример сборки 32 битного бинаря из 64 разрядного линукса. Файлы 32 битного лазаруса лежат на диске, но для сборки программ, запускать его НЕ ОБЯЗАТЕЛЬНО. Ты запускаешь его fpc компилятор и им собираешь. Естественно, в системе должны быть установлены i386 glibc и прочие системные 32 разрядные библиотеки, каталог /lib32 должен быть или должна быть такая символическая ссылка на каталог с 32 разрядными библиотеками. И прочие символические ссылки на библиотеки которые компилятор не может найти тоже по мере необходимости нужно добавлять. У меня же сборка лазарусных программ из коммандной строки работает, почему у тебя она не должна работать?



вы как бы чуток припоздали). FPC собрался успешно после выгрузки ppc386 с сайта.
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Всё, теперь такие компиляции глючат и ключ -Pi386 не спасает. Банально 64 битный ld пытается вкомпилить в 32 битный бинарь пачку 64 битных библиотек, это не получается, он пропускает эту операцию, в результате что-то сложнее хелловорда получает рандомную дыру в коде, в которой запрограммированная логика не работает. Теперь для 32 битных линуксовых сборок только виртуалка с 32 битным линуксом и флешкой для передачи данных, если расшарить каталог нельзя. А под 32 битную винду можно как раньше бинарями 32 битного лазаруса собирать, из под вайна, у него свой линковщик применяется.
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 564
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

Сквозняк, нечего вроде не поменялось.
Сквозняк писал(а):. Банально 64 битный ld пытается вкомпилить в 32 битный бинарь пачку 64 битных библиотек
Потому что нужно использовать 32-битный линкер.
Включаем i386 и ставим 32-битный тулчейн и ставим 32-битные dev-библиотеки и все будет прекрасно работать. Если нужно могу коротенькую инструкцию вечером сделать.
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Оказалась ложная тревога, компилятор древнего 32 битного лазаруса в древнем 64 битном линуксе, в виртуалке (в новом линуксе линковщик не тот, для него новый fpc нужен) нормально компилирует, несмотря на такие сообщения

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

/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
/usr/bin/ld: skipping incompatible /usr/lib64/libpthread.so when searching for -lpthread
/usr/bin/ld: skipping incompatible /usr/lib64/libpthread.a when searching for -lpthread
/usr/bin/ld: skipping incompatible /usr/lib64/libdl.so when searching for -ldl
/usr/bin/ld: skipping incompatible /usr/lib64/libdl.a when searching for -ldl
/usr/bin/ld: skipping incompatible /usr/lib64/libX11.so when searching for -lX11
/usr/bin/ld: skipping incompatible /usr/lib64/libXrandr.so when searching for -lXrandr
/usr/bin/ld: skipping incompatible /usr/lib64/libGL.so when searching for -lGL
/usr/bin/ld: skipping incompatible /usr/lib64/libGLU.so when searching for -lGLU
/usr/bin/ld: skipping incompatible /usr/lib64/libm.so when searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib64/libm.a when searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib64/libz.so when searching for -lz
/usr/bin/ld: skipping incompatible /usr/lib64/libz.a when searching for -lz
/usr/bin/ld: skipping incompatible /usr/lib64/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib64/libc.a when searching for -lc
Просто у меня линкуемые статичные 32 битные библиотеки побились за годы таскания по винтам, гитам и флешкам. Поставил вместо них такие же из другой заначки, и процесс пошёл.
Ответить