Date: Wed, 27 Apr 2005 10:23:39 +0100 From: Michael Hopkins <michael.hopkins@hopkins-research.com> To: "freebsd-amd64@freebsd.org" <freebsd-amd64@freebsd.org> Subject: Shared library relocation R_X86_64_32 solution on amd64? Message-ID: <BE9518AB.38FC5%michael.hopkins@hopkins-research.com>
next in thread | raw e-mail | index | archive | help
Hi all I have been doing some research about why gnustep-base won't link on amd64. It seems as if the problem I am getting here is quite common. ------------------------------------------------------------------------ gmake[1]: Leaving directory `/usr/home/mwh/Coding/Obj-C/gnustep/core/base/Source' Making all in SSL... gmake[1]: Entering directory `/usr/home/mwh/Coding/Obj-C/gnustep/core/base/SSL' Making all for bundle SSL... Creating SSL.bundle/amd64/freebsd/gnu-gnu-gnu... Compiling file GSSSLHandle.m ... Linking bundle SSL ... /usr/bin/ld: /usr/lib/libobjc.a(Protocol.o): relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC /usr/lib/libobjc.a: could not read symbols: Bad value gmake[2]: *** [SSL.bundle/amd64/freebsd/gnu-gnu-gnu/SSL] Error 1 gmake[1]: *** [SSL.all.bundle.variables] Error 2 gmake[1]: Leaving directory `/usr/home/mwh/Coding/Obj-C/gnustep/core/base/SSL' gmake: *** [internal-all] Error 2 ------------------------------------------------------------------------ It has been mentioned a few times on this list: my understanding of this issue is that you can't link to shared libraries unless they have been compiled with -fPIC. Is that right? The first place that the gnustep-base build died was here: --------------------------------------- /usr/bin/ld: /usr/local/lib/libcallback.a(misc.o): relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC /usr/local/lib/libcallback.a: could not read symbols: Bad value collect2: ld returned 1 exit status --------------------------------------- I found out that libcallback.a was installed by ffcall, so I removed that and reinstalled it with CFLAGS += -fPIC in the makefile. This let the build continue. I have two main questions in this post. 1) What installs libobjc.a? I want to reinstall it with CFLAGS += -fPIC. I assumed that it was installed by gcc-objc but after reinstalling that with -fPIC the libobjc.a library was untouched! 2) What is the standard method for dealing with this problem on amd64? I'm sure it will hit a lot of people on many different ports and if it's a tier 1 platform then don't we need to have a proper strategy for dealing with this? TIA Michael _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ _/ _/ _/_/_/ Hopkins Research Ltd _/ _/ _/ _/ _/_/_/_/ _/_/_/ http://www.hopkins-research.com/ _/ _/ _/ _/ _/ _/ _/ _/ 'touch the future' _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BE9518AB.38FC5%michael.hopkins>