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

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

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

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

Сообщение vay » 06.07.2009 17:59:50

Доброго дня
пытаюсь собрать проект находясь в win32 для target=linux - ругается что не может найти sysutils. И правда, поискал в каталогах исходников у FPC по имени, не нашел такого. Или чтото делаю фундаментально не то, или толкните меня в верном направлении? Заранее спасибо.
vay
новенький
 
Сообщения: 22
Зарегистрирован: 06.07.2009 17:56:46

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

Сообщение Attid » 06.07.2009 19:34:49

не прочитал статью на сайте "особености национальной кроскомпиляции"
подобную тему в теме "FAQ lazarus"
мой блог =) на этом сайте
и поиск по форуму по слову "кроскомпиляция"
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

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

Сообщение vay » 07.07.2009 08:24:41

спасибо
приступил к изучению вопроса. но если ответа не найду - все равно вернусь ;)
vay
новенький
 
Сообщения: 22
Зарегистрирован: 06.07.2009 17:56:46

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

Сообщение vay » 08.07.2009 09:58:13

Спасибо статье и гуглю. Модифицировал исходники, собрал доп модули и собрал модуль но, на этапе линковки выдает такое

Код: Выделить всё
Linking .\Release\DatabaseProxy
C:\FPC\bin\i386-linux-ld.exe: cannot find -ldl
DatabaseProxy.dpr(30,1) Error: Error while linking
DatabaseProxy.dpr(30,1) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: C:\FPC\2.2.4\bin\i386-Win32\ppc386.exe returned an error exitcode (normal if you did not specify a source file to be compiled)


Может ли кто что подсказать?

binutils эти - ftp://ftp.freepascal.org/fpc/contrib/cr ... -linux.zip
vay
новенький
 
Сообщения: 22
Зарегистрирован: 06.07.2009 17:56:46

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

Сообщение Sergei I. Gorelkin » 08.07.2009 11:30:26

Так нужны .a файлы от всех библиотек, с которыми линкуется программа. Поэтому кросскомпиляция windows->linux представляет собой порядочную головную боль. Чем эти файлы откуда-то извлекать, проще линукс поставить и в нем компилить. При кросскомпиляции наоборот (linux->windows) такой проблемы нет.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

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

Сообщение vay » 08.07.2009 11:40:07

то есть необходимо *.a с целевой linux машины? Можно ли как то построить список либ нужных для линковки?
vay
новенький
 
Сообщения: 22
Зарегистрирован: 06.07.2009 17:56:46

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

Сообщение Attid » 08.07.2009 11:48:59

где-то на форуме список был, но там только для простой формы, если используешь что-то больше то больше надо.

ЗЫ помнится мне при линковке создается текстовый файл в котором все либы есть, как только начнется Linking грохни процесс и поищи файлик
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

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

Сообщение vay » 08.07.2009 12:03:19

точно не успею грохнуть. оч.быстро.
vay
новенький
 
Сообщения: 22
Зарегистрирован: 06.07.2009 17:56:46

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

Сообщение Иван Шихалев » 08.07.2009 12:27:17

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

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

Сообщение vay » 08.07.2009 12:35:34

тогда в каком месте этот файлик можно поискать?
вроде проверил в каталоге линковщика, fpc, проекта и output каталога проекта - нигде ничего нового не появилось.
vay
новенький
 
Сообщения: 22
Зарегистрирован: 06.07.2009 17:56:46

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

Сообщение Sergei I. Gorelkin » 08.07.2009 12:49:09

Файл называется link.res. Для его гарантированного создания можно пользоваться ключом командной строки -s.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

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

Сообщение vay » 08.07.2009 13:04:40

спасибо- нашел. нашел список либ, буду брать .a файлы с целевой машины и попробую собрать еще раз.
vay
новенький
 
Сообщения: 22
Зарегистрирован: 06.07.2009 17:56:46

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

Сообщение vay » 09.07.2009 16:18:35

Собрал все .a файлы с той машины на которой все это будет работать. В итоге получил такие ошибки. Кто то сможет что подсказать?

Код: Выделить всё
C:\FPC\source\fpcbuild-2.2.4\fpcsrc\rtl\units\i386-linux\dynlibs.o(.text+0x3b): In function `DYNLIBS_LOADLIBRARY$ANSISTRING$$LONGINT':
: warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
C:\FPC\source\fpcbuild-2.2.4\fpcsrc\packages\libc\units\i386-linux\libc.o(.text+0x1871): In function `LIBC_INITIALIZECRITICALSECTION$PTHREAD_MUTEX_T$$LONGINT':
: undefined reference to `pthread_mutexattr_init'
C:\FPC\source\fpcbuild-2.2.4\fpcsrc\packages\libc\units\i386-linux\libc.o(.text+0x18a3): In function `LIBC_INITIALIZECRITICALSECTION$PTHREAD_MUTEX_T$$LONGINT':
: undefined reference to `pthread_mutexattr_settype'
C:\FPC\source\fpcbuild-2.2.4\fpcsrc\packages\libc\units\i386-linux\libc.o(.text+0x18bf): In function `LIBC_INITIALIZECRITICALSECTION$PTHREAD_MUTEX_T$$LONGINT':
: undefined reference to `pthread_mutex_init'
C:\FPC\source\fpcbuild-2.2.4\fpcsrc\packages\libc\units\i386-linux\libc.o(.text+0x18d3): In function `LIBC_INITIALIZECRITICALSECTION$PTHREAD_MUTEX_T$$LONGINT':
: undefined reference to `pthread_mutexattr_destroy'
C:\FPC\source\fpcbuild-2.2.4\fpcsrc\packages\libc\units\i386-linux\libc.o(.text+0x1901): In function `LIBC_TRYENTERCRITICALSECTION$PTHREAD_MUTEX_T$$BOOLEAN':
: undefined reference to `pthread_mutex_trylock'
.\libc.a(syslog.o)(.text+0x434): In function `openlog':
: undefined reference to `_Unwind_Resume'
.\libc.a(syslog.o)(.text+0x4c9): In function `closelog':
: undefined reference to `_Unwind_Resume'
.\libc.a(syslog.o)(.text+0x9e8): In function `__vsyslog_chk':
: undefined reference to `_Unwind_Resume'
.\libc.a(syslog.o)(.text+0x9fa): In function `__vsyslog_chk':
: undefined reference to `_Unwind_Resume'
.\libc.a(syslog.o)(.eh_frame+0x166): undefined reference to `__gcc_personality_v0'
.\libc.a(syslog.o)(.eh_frame+0x1db): undefined reference to `__gcc_personality_v0'
.\libc.a(backtrace.o)(.text+0x40): In function `backtrace':
: undefined reference to `_Unwind_Backtrace'
.\libc.a(backtrace.o)(.text+0xfb): In function `backtrace_helper':
: undefined reference to `_Unwind_GetIP'
.\libc.a(backtrace.o)(.text+0x120): In function `backtrace_helper':
: undefined reference to `_Unwind_GetGR'
.\libc.a(backtrace.o)(.text+0x12b): In function `backtrace_helper':
: undefined reference to `_Unwind_GetCFA'
.\libc.a(vfprintf_chk.o)(.text+0xfc): In function `__vfprintf_chk':
: undefined reference to `_Unwind_Resume'
.\libc.a(vfprintf_chk.o)(.eh_frame+0xdf): undefined reference to `__gcc_personality_v0'
.\libc.a(iofclose.o)(.text+0x1a7): In function `fclose':
: undefined reference to `_Unwind_Resume'
.\libc.a(iofclose.o)(.eh_frame+0x167): undefined reference to `__gcc_personality_v0'
.\libc.a(iofflush.o)(.text+0xd6): In function `fflush':
: undefined reference to `_Unwind_Resume'
.\libc.a(iofflush.o)(.eh_frame+0xdf): undefined reference to `__gcc_personality_v0'
.\libc.a(iofputs.o)(.text+0x10d): In function `fputs':
: undefined reference to `_Unwind_Resume'
.\libc.a(iofputs.o)(.eh_frame+0xdf): undefined reference to `__gcc_personality_v0'
.\libc.a(ioftell.o)(.text+0x194): In function `ftell':
: undefined reference to `_Unwind_Resume'
.\libc.a(ioftell.o)(.eh_frame+0xdf): undefined reference to `__gcc_personality_v0'
.\libc.a(iofwrite.o)(.text+0x13c): In function `fwrite':
: undefined reference to `_Unwind_Resume'
.\libc.a(iofwrite.o)(.eh_frame+0xdf): undefined reference to `__gcc_personality_v0'
.\libc.a(iogetdelim.o)(.text+0x262): In function `getdelim':
: undefined reference to `_Unwind_Resume'
.\libc.a(iogetdelim.o)(.eh_frame+0xdf): undefined reference to `__gcc_personality_v0'
.\libc.a(ioseekoff.o)(.text+0x1e5): In function `_IO_seekoff':
: undefined reference to `_Unwind_Resume'
.\libc.a(ioseekoff.o)(.eh_frame+0xde): undefined reference to `__gcc_personality_v0'
.\libc.a(ioseekoff.o)(.eh_frame+0x11f): undefined reference to `__gcc_personality_v0'
.\libc.a(wfileops.o)(.text+0xd5b): In function `_IO_wfile_underflow':
: undefined reference to `_Unwind_Resume'
.\libc.a(wfileops.o)(.eh_frame+0xde): undefined reference to `__gcc_personality_v0'
.\libc.a(wfileops.o)(.eh_frame+0x157): undefined reference to `__gcc_personality_v0'
.\libc.a(fileops.o)(.text+0x11f1): In function `_IO_file_underflow':
: undefined reference to `_Unwind_Resume'
.\libc.a(fileops.o)(.text+0x2635): In function `_IO_file_fopen':
: undefined reference to `_Unwind_Resume'
.\libc.a(fileops.o)(.eh_frame+0xde): undefined reference to `__gcc_personality_v0'
.\libc.a(fileops.o)(.eh_frame+0x357): undefined reference to `__gcc_personality_v0'
.\libc.a(fseek.o)(.text+0xde): In function `fseek':
: undefined reference to `_Unwind_Resume'
.\libc.a(fseek.o)(.eh_frame+0xdf): undefined reference to `__gcc_personality_v0'
.\libc.a(ftello.o)(.text+0x194): In function `ftello':
: undefined reference to `_Unwind_Resume'
.\libc.a(ftello.o)(.eh_frame+0xdf): undefined reference to `__gcc_personality_v0'


Добавлено спустя 1 минуту:
необходимы были эти файлы.
libc.a
libcrypt.a
libdl.a
libpthread.a
librt.a

Может есть у кого эти файлы с которыми собираются проекты из под win32 в linux ?
vay
новенький
 
Сообщения: 22
Зарегистрирован: 06.07.2009 17:56:46

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

Сообщение Иван Шихалев » 09.07.2009 18:06:26

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

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

Сообщение vay » 10.07.2009 09:52:58

если я верно понял про smartlink - то -CX и -XX включение не помогло. ошибки остались те же.
vay
новенький
 
Сообщения: 22
Зарегистрирован: 06.07.2009 17:56:46

След.

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

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

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

Рейтинг@Mail.ru