De fapt e problema de linkeditare (cred).
Aşa cum am spus săptămâna trecută, sunt nevoit să dezvolt un program în 
pascal pentru o jucărie embedded cu un procesor StrongARM intel. 
Jucăria rulează linux.
Dezvoltarea o fac în fpc (freepascal); am instalat varianta de 
cross-compilator în mandriva 2006.
Jucăria vine cu Cygwin, cu versiunea de gcc pentru arm.
Am copiat de acolo şi am pus în căile lui fpc toate fişierele .o de care 
se plângea că nu le găseşte când ajungea la linkeditare. Un program 
care foloseşte ncurses sau X se poate compila acum fără probleme, şi 
rulează corect pe arm. Boon...
Problema vine când trebuie să folosesc nişte funcţii specifice 
device-ului, funcţii conţinute într-un fişier denumit libi8k.a. Am 
creat nişte unit-uri în pascal, pornind de la fişierele .h existente în 
mediul iniţial.
Acum, când încerc o compilare/linkeditare, rezultatul este:
*********************************************************************
Linking test
./libi8k.a(i7000.o)(.text+0x854c): In function `AnalogInAll':
/i8klib/arm/i8k/i8k/i7000.c:2324: undefined reference to `__modsi3'
./libi8k.a(timer.o)(.text+0x120): In function `_time_set_deadline':
/i8klib/arm/i8k/i8k/timer.c:60: undefined reference to `__udivsi3'
./libi8k.a(timer.o)(.text+0x15c):/i8klib/arm/i8k/i8k/timer.c:61: 
undefined reference to `__umodsi3'
./libi8k.a(timer.o)(.text+0x19c):/i8klib/arm/i8k/i8k/timer.c:63: 
undefined reference to `__divsi3'
./libi8k.a(timer.o)(.text+0x1d0):/i8klib/arm/i8k/i8k/timer.c:64: 
undefined reference to `__modsi3'
test.pas(8,13) Error: Error while linking
*********************************************************************
După săpături şi căutări, am dedus ca referinţele pe care se plânge că 
nu le găseşte sunt în libgcc.a. Am copiat şi fişierul ăsta unde le-am 
pus pe celelalte, da' eroare persistă. În nici un .h nu există nici o 
referire la aceste funcţii şi nici în comanda specifică de compilare cu 
gcc nu e vreo referire implicită la acest libgcc.a (sau gcc.a, sau pe 
mă-sa).
Aici m-am blocat (urât, aş putea spune). Am încercat inclusiv să-i bag 
pe gât în linia de comandă cu "-lgcc"; nada. Ce dracu să-i mai fac??
Scuze pentru lungimea mesajului.

Şi ca să răspund la o posibilă întrebare de genul:"De ce nu scriu 
programul în C?". Pen'că distinsul client vrea neapărat în pascal, vrea 
sursele, urmând ca pe viitor să dezvolte el aplicaţia în continuare.

-- 
Dragos P
126296 luser
"La revedere. Drum bun"

_______________________________________________
RLUG mailing list
RLUG@lists.lug.ro
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui