LibXML Compile Error: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC


Enter Your Query:
Use '%' for wildcards and quotes for "exact phrases"


Top Level » CustomBuild

LibXML Compile Error: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPICLast Modified: Mar 4, 2011, 11:39 pm
If you get the following error during a libxml compile with a 64-bit system:

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib/libm.a(s_floor.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib/libm.a: could not read symbols: Bad value
collect2: ld returned 1 exit status

It means the configure needs to be changed. Usually, for an -fPIC error like this, the best way is to recompile the source library to resolve the issue, then recompile libxml the same way. However, in this case, the cause is libml.a, which is part of the OS distribution, so it's better to avoid that, and make everything with the inverse instead.

In this case, the solution is to set libxml to not use fPIC or shared libraries.
Edit the build script. In the doLibxml2  section, find the line:

./configure --prefix=/usr/local --without-python

and change it to:

./configure --prefix=/usr/local --without-python --disable-shared --without-pic

Save/exit.
Then type:

./build libxml

and that should compile libxml for you.



Note: That after further work on this issue, I was able to prevent the error, without needing the above items.  The fix basically included a full reinstall of all of the dev, gcc, build-esssentials type items using dpkg and the apt-get program.  I'm not sure if it was related, but I also did a

./build libtool
./build zlib
./build autoconf
./build automake

which didn't get rid of the above error, but in case it was partly related to solving the issue on Debian 5, 64-bit.  Related dpkg and apt-get commands used (after much trial and error):

aptitude remove libc6-dev libsasl2-dev libstdc++6-4.1-dev zlib1g-dev g++-4.1 build-essential libssl-dev libcurl4-openssl-dev comerr-dev gcc libkrb5-dev libc-dev libstdc++6-4.3-dev g++-4.3

and

apt-get install gcc g++ make flex bison openssl libssl-dev perl perl-base perl-modules libperl-dev build-essential


 
Related Helpfiles
Curl Compile Error: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC

2003 JBMC Software, Suite 173  3-11 Bellerose Drive, St Albert, AB  T8N 1P7  Canada.  Mon-Fri 9AM-5PM MST