[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Länkfel på amd64. gcc föreslår -fPIC



Hej!
Jag försöker kompilera Scilab med java-stöd på min amd64-burk.
Det enda som inte funkar är länkningen av java-interfacet. Länkaren körs med följande kommando: gfortran -Wl,-zdefs -Wl,-shared -o ../../bin/libjavasci.so <en himla massa objektfiler> <en himla massa .a-filer>

Länkaren stannar då med följande felmeddelande:
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.1.2/../../../../lib64/crt1.o: relocation R_X86_64_32S against `__libc_csu_fini' can not be used when making a shared object; recompile with -fPIC /usr/lib/gcc/x86_64-linux-gnu/4.1.2/../../../../lib64/crt1.o: could not read symbols: Bad value
collect2: ld returned 1 exit status

Är det någon som förstår vad som är fel?
Efter att ha läst lite på nätet tror jag att problemet uppstår på 64-bitarsplattformar när man försöker länka ihop kod som är kompilerad med -fPIC med kod som inte är kompilerad med -fPIC. I detta fal skulle alltså problemet bero på att crt1.o inte är kompilerad med -fPIC. Kan det vara så? Hör kan man isåfall lösa problemet? crt1.o verkar vara en del av libc6-paketet i debian. Jag hittade även ett debian-paket som heter libc6-pic. Har detta paket något med saken att göra?

Alla förslag är välkomna!

/Arvid



Reply to: