Ahojte makáči,
měl bych tu opět jeden problém s portováním GNU Octave. Postoupil jsem díky nové verzi GCC o několik kroků dopředu, ale pořád ne a ne dobelhat se do konce :-(
Problém je ten, že Make nemůže při linkování najít dynamickou knihovnu, kterou předtím vygenerovalo. Knihovna byla vygenerována se jménem libcruft.so, jak bývá v Unixu zvykem. Poté se má přilinkovat přepínačem "-l cruft", což by klasicky v Unixu mělo být OK. Ale nejsem si vůbec jist, že je to tak dobře pod naším portem GCC. Zkoušel jste někdo něco podobého? Knihovna uvnitř má klasický unixový formát, můžu si ji prolistovat například programem nm.
Linker hlásí tuto chybu:
ld.exe: No such file or directory for cruft
Tedy nemůže buď najít nebo přilinkovat libcruft.so. Ten soubor určitě exstuje, při linkování se parametrem -L dává správná cesta k adresáři, kde knihovna je.
Jenom podotýkám, že všechny makefily jsou generovány přes Configure.
Linkovací příkaz je následující (notně zkráceno veprostřed, rozsekáno do řádků):
g++ -shared -o liboctave.so
pic/oct-locbuf.o pic/CollocWt.o pic/DASPK.o pic/DASRT.o pic/DASSL.o pic/LSODE.o
pic/md5.o pic/mkdir.o pic/oct-getopt.o pic/randgamma.o pic/randmtzig.o pic/randpoisson.o pic/rename.o
pic/rmdir.o pic/strftime.o pic/strptime.o pic/strcasecmp.o pic/strncase.o pic/tempname.o pic/tempnam.o
pic/cmd-edit.o pic/cmd-hist.o pic/oct-rl-edit.o pic/oct-rl-hist.o pic/pathsearch.o pic/kpse-xfns.o
-L../libcruft -L.
-lcruft -lreadline -lreadline -lncurses -ldl -lm
-LU:/usr/local442/bin/../lib/gcc/i386-pc-os2-emx/4.4.2
-LU:/usr/local442/bin/../lib/gcc
-Lu:/usr/local442/lib
-LU:/usr/local442/lib/gcc/i386-pc-os2-emx/4.4.2
-LU:/usr/lib
-Lu:/extras/lib
-Lu:/dev/qt/trunk/lib
-LU:/usr/local442/bin/../lib/gcc/i386-pc-os2-emx/4.4.2/../../..
-lgfortranbegin -lgfortran -lm -lc_alias -lc_dll -los2 -lend
Nějaké nápady?
Děkuji pěkně za tipy i případné řešení, Jarda
-------------------------------
Jarda Kačer
Web a kontakty: [
jarda.kacer.biz]