[gmx-users] Error compiling Gromacs 4.5.4: "relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC"

Luca Bellucci lcbllcc at gmail.com
Thu Apr 21 12:37:27 CEST 2011


Hi all,
I have encountered the same problem.
With this command:
./configure --with-fft=mkl --prefix=/path/gmx-4.5.3 --enable-mpi
"make mdrun" works well
 
When i used the same option with gmx 4.5.4 
 ./configure --with-fft=mkl --prefix=/path/gmx-4.5.4 --enable-mpi
"make mdrun" did not work.
The compilation reported this error:
ld: /usr/local/mpich2-1.3.2p2-install/lib/libmpich.a(allreduce.o): relocation 
R_X86_64_32 against `_2__STRING.14' can not be used when making a shared 
object; recompile with -fPIC
etc..
the problem here seems to be the use of shared or static libraries. 
I done configure command several times using the " --with-pic" and other 
combinations, however I did not resolve the problem.  Perhaps there is an 
option that I have not seen!!
Anyway I released that there is a different default behavior of the "configure" 
command.
In fact using the options reported above the configure command gives in 
configure.ac for 4.5.3 at line ~27:
AC_DISABLE_SHARED

whereas in configure.ac for 4.5.4 ther is 
AC_ENABLE_SHARED
test "$enable_mpi" = "yes" && AC_DISABLE_SHARED

When i changed these two lines in AC_DISABLE_SHARED also gmx4.5.4 is compiled. 
Luca

> Pablo Englebienne wrote:
> > Hi all,
> > 
> > I'm trying to compile release 4.5.4 on a system that has been running
> > every release since 4.0.4 without a problem. Even 4.5.3 compiled fine
> > with the following configure:
> > 
> > LDFLAGS="-L/cvos/shared/apps/fftw/gcc/64/3.2/lib"
> > CPPFLAGS="-I/cvos/shared/apps/fftw/gcc/64/3.2/include" ./configure
> > --prefix=$HOME/software
> > 
> > The LDFLAGS and CPPFLAGS specify the (non-standard) location of the FFTW
> > libraries and headers. Configure succeeds in creating the Makefiles, but
> > when running make it aborts at this point:
> > 
> > cc  -shared  .libs/calcmu.o .libs/calcvir.o .libs/constr.o
> > .libs/coupling.o .libs/domdec.o .libs/domdec_box.o .libs/domdec_con.o
> > .libs/domdec_network.o .libs/domdec_setup.o .libs/domdec_top.o
> > .libs/ebin.o .libs/edsam.o .libs/ewald.o .libs/force.o .libs/forcerec.o
> > .libs/ghat.o .libs/init.o .libs/mdatom.o .libs/mdebin.o .libs/minimize.o
> > .libs/mvxvf.o .libs/ns.o .libs/nsgrid.o .libs/perf_est.o .libs/genborn.o
> > .libs/genborn_sse2_single.o .libs/genborn_sse2_double.o
> > .libs/genborn_allvsall.o .libs/genborn_allvsall_sse2_single.o
> > .libs/genborn_allvsall_sse2_double.o .libs/gmx_qhop_parm.o
> > .libs/gmx_qhop_xml.o .libs/groupcoord.o .libs/pme.o .libs/pme_pp.o
> > .libs/pppm.o .libs/partdec.o .libs/pull.o .libs/pullutil.o
> > .libs/rf_util.o .libs/shakef.o .libs/sim_util.o .libs/shellfc.o
> > .libs/stat.o .libs/tables.o .libs/tgroup.o .libs/tpi.o .libs/update.o
> > .libs/vcm.o .libs/vsite.o .libs/wall.o .libs/wnblist.o .libs/csettle.o
> > .libs/clincs.o .libs/qmmm.o .libs/gmx_fft.o .libs/gmx_parallel_3dfft.o
> > .libs/fft5d.o .libs/gmx_wallcycle.o .libs/qm_gaussian.o .libs/qm_mopac.o
> > .libs/qm_gamess.o .libs/gmx_fft_fftw2.o .libs/gmx_fft_fftw3.o
> > .libs/gmx_fft_fftpack.o .libs/gmx_fft_mkl.o .libs/qm_orca.o
> > .libs/mdebin_bar.o  -Wl,--rpath
> > -Wl,/home/penglebie/downloads/gromacs-4.5.4/src/gmxlib/.libs -Wl,--rpath
> > -Wl,/home/penglebie/software/lib
> > /cvos/shared/apps/fftw/gcc/64/3.2/lib/libfftw3f.a -lxml2
> > -L/cvos/shared/apps/fftw/gcc/64/3.2/lib ../gmxlib/.libs/libgmx.so -lnsl
> > -lm  -msse2 -pthread -Wl,-soname -Wl,libmd.so.6 -o .libs/libmd.so.6.0.0
> > /usr/bin/ld:
> > /cvos/shared/apps/fftw/gcc/64/3.2/lib/libfftw3f.a(plan-many-dft-r2c.o):
> > relocation R_X86_64_32 against `a local symbol' can not be used when
> > making a shared object; recompile with -fPIC
> > /cvos/shared/apps/fftw/gcc/64/3.2/lib/libfftw3f.a: could not read
> > symbols: Bad value
> > collect2: ld returned 1 exit status
> > make[3]: *** [libmd.la] Error 1
> > make[3]: Leaving directory
> > `/home/penglebie/downloads/gromacs-4.5.4/src/mdlib'
> > make[2]: *** [all-recursive] Error 1
> > make[2]: Leaving directory `/home/penglebie/downloads/gromacs-4.5.4/src'
> > make[1]: *** [all] Error 2
> > make[1]: Leaving directory `/home/penglebie/downloads/gromacs-4.5.4/src'
> > make: *** [all-recursive] Error 1
> > 
> > I see that recently
> > (http://lists.gromacs.org/pipermail/gmx-users/2011-April/059919.html)
> > another user encountered the same problem but this time with version
> > 4.5.3; in my case 4.5.3 compiles fine, the only issue is with 4.5.4.
> 
> The solution is discussed in the installation instructions:
> 
> http://www.gromacs.org/Downloads/Installation_Instructions#Prerequisites
> 
> > The system is running Scientific Linux 5.5.
> > 
> > $ uname -a
> > 
> > Linux ST-HPC-Main 2.6.18-128.7.1.el5 #1 SMP Mon Aug 24 08:12:52 EDT 2009
> > x86_64 x86_64 x86_64 GNU/Linux
> > 
> > 
> > I am puzzled as to why it doesn't work in 4.5.4 but did until the
> > previous release. Did something change in this respect?
> 
> Maybe, but the fact that this issue has come up numerous times in several
> versions suggests not.  As for why 4.5.3 works and 4.5.4 doesn't, I can't
> say specifically.  Please follow the instructions linked above and see if
> it fixes your problem.
> 
> -Justin
> 
> > Regards,
> > Pablo



More information about the gromacs.org_gmx-users mailing list