Кросскомпиляция из win32 для linux и sysutils

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

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

Re: Кросскомпиляция из win32 для linux и sysutils

Сообщение Sergei I. Gorelkin » 11.07.2009 16:40:16

libc (точнее, glibc - с другими инкарнациями libc, вроде uclibc, все более благополучно, тьфу-тьфу) к настоящему времени превратился в такого монстра... У меня складывается впечатление, что о всех тонкостях его устройства и внутренних взаимосвязях знают от силы человек пять в мире.

Насколько можно понять из чтения комментариев к багрепортам:
1) FPC что-то проверяет в ELF interpreter (как оно правильно переводится?), который /lib/ld-linux.so.2. При кросскомпиляции, скорее всего, он этого не делает.
2) Линкер (ld) может быть заточен под конкретную систему и подключать какие-то одному ему известные модули. То есть, работать совсем не так, как линкер из binutils, используемый при кросскомпиляции.
3) Наличие нескольких незакрытых багрепортов говорит о том, что оно глючит даже при компиляции в "родном" окружении. Например, у меня на slackware файл /lib/libc.so является скриптом, и до тех пор, пока его не сделаешь симлинком на /lib/libc.so.6, ни одна программа на Free Pascal с libc не собирается в принципе. А после того, как сделаешь симлинком, невозможно ничего собрать уже с помощью gcc.

Чего уж тут о кросскомпиляции говорить...

Добавлено спустя 3 минуты 28 секунд:
...точнее, надо сказать, что, пока речь не заходит о libc, кросскомпиляция работает. Т.е. сам FPC и простые программы на нем собираются без проблем.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Кросскомпиляция из win32 для linux и sysutils

Сообщение Иван Шихалев » 11.07.2009 19:15:32

Sergei I. Gorelkin писал(а):...точнее, надо сказать, что, пока речь не заходит о libc, кросскомпиляция работает. Т.е. сам FPC и простые программы на нем собираются без проблем.

А что не собирается? Простенький примерчик, проверить хочу... (Да, у меня /usr/lib/libc.so — ld-скрипт).
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Кросскомпиляция из win32 для linux и sysutils

Сообщение Sergei I. Gorelkin » 12.07.2009 01:36:29

Да все, что так или иначе использует libc, начиная с любого многопоточного приложения (пример в Lazarus - examples/multithreading/criticalsectionexample1.lpi) и заканчивая самим Lazarus.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Кросскомпиляция из win32 для linux и sysutils

Сообщение Иван Шихалев » 12.07.2009 08:25:55

Сам Lazarus у меня прекрасно собирается и работает без изменений libc.so...
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Кросскомпиляция из win32 для linux и sysutils

Сообщение Attid » 12.07.2009 09:52:48

поддерживаю. у меня это тоже скрипт. и многопоточные собираются. может в скрипте дело ?
вот мой :

Код: Выделить всё
/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf32-i386)
GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a  AS_NEEDED ( /lib/ld-linux.so.2 ) )
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Кросскомпиляция из win32 для linux и sysutils

Сообщение Иван Шихалев » 12.07.2009 10:35:46

Аналогично:
Код: Выделить всё
/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a  AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) )
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Кросскомпиляция из win32 для linux и sysutils

Сообщение Sergei I. Gorelkin » 12.07.2009 12:37:19

И у меня скрипт такой же (как у Attid, поскольку i386). Самое интересное, сейчас попробовал еще раз - Lazarus собрался на ура. Видать, что-то обновилось... Рабочий проект не собрался по совершенно другой причине.
Вообще, я наверное зря привел себя в пример. Багрепорты (12400, 14128) были не о том.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Пред.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru