Сборка программы под Linux на FPC
Модератор: Модераторы
shade писал(а):Под линухом скомпилировалось? работает?
Да, с первого раза без проблем.
shade писал(а):AlexSuv писал(а):выдает более отсмысленные типа: "undefined reference to:" ... что говорит что мы на верном пути, и просто библиотека немного не подходит,
А подробнее, что там undefined...
Если libpthread использует другую библиотеку, например туже libc, то она вроде также должна присутствовать. Вобщем нужны все библиотеки используемые непосредсвенно, и вподе все используемые косвенно...
./libpthread.so: undefined reference to `free@GLIBC_2.0'
./libpthread.so: undefined reference to `__setmntent@GLIBC_2.2'
./libpthread.so: undefined reference to `_dl_allocate_tls_init@GLIBC_PRIVATE'
./libpthread.so: undefined reference to `_setjmp@GLIBC_2.0'
./libpthread.so: undefined reference to `_rtld_global@GLIBC_PRIVATE'
./libpthread.so: undefined reference to `__libc_pthread_init@GLIBC_PRIVATE'
./libpthread.so: undefined reference to `__getmntent_r@GLIBC_2.2'
./libpthread.so: undefined reference to `mprotect@GLIBC_2.0'
./libpthread.so: undefined reference to `__libc_allocate_rtsig_private@GLIBC_PRIVATE'
./libpthread.so: undefined reference to `sched_yield@GLIBC_2.0'
./libpthread.so: undefined reference to `calloc@GLIBC_2.0'
./libpthread.so: undefined reference to `getrlimit@GLIBC_2.2'
./libpthread.so: undefined reference to `_res@GLIBC_PRIVATE'
./libpthread.so: undefined reference to `__libc_thread_freeres@GLIBC_PRIVATE'
./libpthread.so: undefined reference to `__getpagesize@GLIBC_2.0'
./libpthread.so: undefined reference to `__mempcpy@GLIBC_2.0'
./libpthread.so: undefined reference to `_dl_deallocate_tls@GLIBC_PRIVATE'
./libpthread.so: undefined reference to `__sched_get_priority_min@GLIBC_2.0'
./libpthread.so: undefined reference to `fchmod@GLIBC_2.0'
./libpthread.so: undefined reference to `__libc_longjmp@GLIBC_PRIVATE'
./libpthread.so: undefined reference to `memset@GLIBC_2.0'
./libpthread.so: undefined reference to `__libc_system@GLIBC_PRIVATE'
./libpthread.so: undefined reference to `errno@GLIBC_PRIVATE'
./libpthread.so: undefined reference to `unlink@GLIBC_2.0'
после добавления опции -Xc ошибки пропадают, компиляция проходит без проблем, но код вырастает в 2 раза и выдает segmentation fault при запуске.
Attid писал(а):угу попробуй с помощью filemon выследить какие файлы и где ищет.
Лог filemon:
Код: Выделить всё
23:42:04 ld.exe:1340 OPEN D:\FPC\UNITS\I386-LINUX\LIBC.SO.6 NOT FOUND Options: Open Access: 00000081
23:42:04 ld.exe:1340 OPEN D:\FPC\UNITS\I386-LINUX\LD-LINUX.SO.2 NOT FOUND Options: Open Access: 00000081
23:42:04 ld.exe:1340 OPEN D:\FPC\BIN\I386-WIN32\LIBPTHREAD.SO NOT FOUND Options: Open Access: 00000081
23:42:05 ld.exe:1340 OPEN D:\FPC\bin\i386-win32\libpthread.so NOT FOUND Options: Open Access: Read
23:42:05 ld.exe:1340 OPEN D:\FPC\bin\i386-win32\libpthread.a NOT FOUND Options: Open Access: Read
это если не ставить ни каких библиотек.
Если я ему подсовываю библиотеки:
libc.so.6
ld-linux.so.2
libpthread.so
libdl.so
то он находит все файлы, но выдает undefined reference to (лог в предыдущем посте).
Может библиотеки не подходят. Не мог бы кто выложить эти библиотеки (а может еще какие) на какую-нибудь рапиду с рабочей системы (на которой кросплатформленно компилируется под линукс). бул бы признателен. А то видно версии какие-то не те.
- Attid
- долгожитель
- Сообщения: 2588
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
вот мои библиатечки вытаскивал когда по кросу врывался из венды
http://rapidshare.com/files/53298633/lib.zip.html
но не гарантирую что от них все заработает.
я для себя решил делать крос только из линукса =)
http://rapidshare.com/files/53298633/lib.zip.html
но не гарантирую что от них все заработает.
я для себя решил делать крос только из линукса =)
Attid писал(а):вот мои библиатечки вытаскивал когда по кросу врывался из венды
http://rapidshare.com/files/53298633/lib.zip.html
но не гарантирую что от них все заработает.
я для себя решил делать крос только из линукса =)
Спасибо за библиотечки, но с ними та же история.
Даже уже и не знаю что делать. Можно конечно через линукс в виртуальной машине компилить (так я пока и делаю), но я просто не привык сдаваться.
А вообще скажите, хоть у кого-то получилось откомпилировать что-то с компонентами indy под линукс из win32?
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Если я ему подсовываю библиотеки:
libc.so.6
ld-linux.so.2
libpthread.so
libdl.so
то он находит все файлы, но выдает undefined reference to (лог в предыдущем посте).
Попробуй подсунуть
libc.a
libdl.a
libpthread.a
ну и so-шки оставь, мало ли...
ld-linux.a на своей машне не обнаружил, и возможно его нет в природе...
потому положим ld-linux.so.2
так ребята - немного по библиотекам лина:
ld-linux* - это динамический линкер статической версии не бывает - во всяком случае я не видел
для того чтобы слинковать с extern 'c', требуется libc*so , но учитывая то, что мы пока что при этом не способны правильно настроить ld, для линковки, нужно поставить libc*-dev пакет, который настроить ld самостоятельно ...
проверить это можно:
gcc hello.c
gcc поставить не забудьте тоже
если скомпилится хелло, значит скомпилится и паскаль с extern 'c'
посмотреть с какими библиотеками скопилилось можно чере ldd hello
ld-linux* - это динамический линкер статической версии не бывает - во всяком случае я не видел
для того чтобы слинковать с extern 'c', требуется libc*so , но учитывая то, что мы пока что при этом не способны правильно настроить ld, для линковки, нужно поставить libc*-dev пакет, который настроить ld самостоятельно ...
проверить это можно:
Код: Выделить всё
#include <stdio.h>
void main() {
printf("hello world\n");
}
gcc hello.c
gcc поставить не забудьте тоже
если скомпилится хелло, значит скомпилится и паскаль с extern 'c'
посмотреть с какими библиотеками скопилилось можно чере ldd hello
