Witam,
Dostałem ostatnio maszynę z 64 bitowym procesorem ( Intel(R) Pentium(R) 4 CPU 3.40GHz (3400.02-MHz K8-class CPU) ). Potrzebuję na niej skompilować bibliotekę xerces-c v. 2.7.0, lecz nie do końca mi to wychodzi. Otóż po udanej kompilacji wszelkich źródeł niestety linker zgłasza błąd:
/usr/bin/ld: /usr/lib/libgcc.a(unwind-dw2.o): relocation R_X86_64_32S can not be used when making a shared object; recompile with -fPIC
/usr/lib/libgcc.a: could not read symbols: Bad value
(chyba nie muszę dodawać, że przekompilowanie źródeł z opcją -fPIC daje ten sam rezultat).
Do zlinkowania biblioteki dzielonej g++ używa następujących opcji:
g++ -DFREEBSD -shared -fPIC -Wl,-soname,libxerces-c.so.27 (obiekty) -L/usr/local/ -L/usr/local//lib -L/usr/local//data -pthread -lc_r -L/usr/local/lib -L/usr/local/ -licuuc -licudata -lgcc
Do kompilacji poszczególnych obiektów:
-fPIC -w -O -DNDEBUG -DPROJ_XMLPARSER -DPROJ_XMLUTIL -DPROJ_PARSERS -DPROJ_SAX4C -DPROJ_SAX2 -DPROJ_DOM -DPROJ_DEPRECATED_DOM -DPROJ_VALIDATORS -DXML_USE_ICU_TRANSCODER -I/usr/local//include -DXML_USE_INMEM_MESSAGELOADER -D_THREAD_SAFE -DXML_USE_PTHREADS -DXML_USE_NETACCESSOR_SOCKET
Podaję także opcję skryptu runConfigure:
./runConfigure -pfreebsd -ticu -cgcc -xg++ -minmem -nsocket -rpthread -z-fPIC -b64
Po zawziętym googlowaniu doszedłem do wniosku, że ten problem nie jest zbyt popularny. Może ktoś z Was się z nim spotkał, lub przynajmniej wie czego on dotyczy. Podczas kompilacji innych bibliotek ten problem nie występuje.
Chciałbym dodatkowo zaznaczyć, że zmiana biblioteki na inną nie wchodzi w grę.
Za każdą pomoc serdeczne dzięki.