Сборка программы под Linux на FPC

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

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

Сообщение Attid » 03.09.2007 15:22:33

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

Сообщение AlexSuv » 03.09.2007 22:09:11

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 при запуске.
AlexSuv
новенький
 
Сообщения: 16
Зарегистрирован: 02.09.2007 04:22:12

Сообщение AlexSuv » 04.09.2007 00:53:25

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 (лог в предыдущем посте).

Может библиотеки не подходят. Не мог бы кто выложить эти библиотеки (а может еще какие) на какую-нибудь рапиду с рабочей системы (на которой кросплатформленно компилируется под линукс). бул бы признателен. А то видно версии какие-то не те.
AlexSuv
новенький
 
Сообщения: 16
Зарегистрирован: 02.09.2007 04:22:12

Сообщение Attid » 04.09.2007 11:12:38

вот мои библиатечки вытаскивал когда по кросу врывался из венды
http://rapidshare.com/files/53298633/lib.zip.html
но не гарантирую что от них все заработает.
я для себя решил делать крос только из линукса =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение AlexSuv » 04.09.2007 12:10:17

Attid писал(а):вот мои библиатечки вытаскивал когда по кросу врывался из венды
http://rapidshare.com/files/53298633/lib.zip.html
но не гарантирую что от них все заработает.
я для себя решил делать крос только из линукса =)

Спасибо за библиотечки, но с ними та же история. :(

Даже уже и не знаю что делать. Можно конечно через линукс в виртуальной машине компилить (так я пока и делаю), но я просто не привык сдаваться.

А вообще скажите, хоть у кого-то получилось откомпилировать что-то с компонентами indy под линукс из win32?
AlexSuv
новенький
 
Сообщения: 16
Зарегистрирован: 02.09.2007 04:22:12

Сообщение shade » 05.09.2007 17:56:06

Если я ему подсовываю библиотеки:

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
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение AlexSuv » 05.09.2007 18:00:25

shade писал(а):libc.a
libdl.a
libpthread.a
ну и so-шки оставь, мало ли...

А где их взять-то. Я пробовал с разных линухов, дак размеры libpthread.a отличаются от 50 кб libpthread.a до 2-3-4 мб!
AlexSuv
новенький
 
Сообщения: 16
Зарегистрирован: 02.09.2007 04:22:12

Сообщение Mayor » 06.09.2007 09:07:34

так ребята - немного по библиотекам лина:

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
Mayor
новенький
 
Сообщения: 20
Зарегистрирован: 04.09.2007 16:55:14

Пред.

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

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

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

Рейтинг@Mail.ru