Shared library relocation R_X86_64_32 solution on amd64?
Michael Hopkins
michael.hopkins at hopkins-research.com
Wed Apr 27 02:23:48 PDT 2005
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'
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
More information about the freebsd-amd64
mailing list