Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] [SOLVED] unresolvable R_X86_64_64 relocation against symbol `mpi_fortran_*
From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2011-10-03 18:14:35


Wow -- painful! Glad you figured it out; thanks for posting it back here to make it google-able.

On Oct 3, 2011, at 9:21 AM, Dmitry N. Mikushin wrote:

> Ok, here's the solution: remove --as-needed option out of compiler's
> internal linker invocation command line. Steps to do this:
>
> 1) Dump compiler specs: $ gcc -dumpspecs > specs
> 2) Open specs file for edit and remove --as-needed from the line
>
> *link:
> %{!r:--build-id} --no-add-needed --as-needed %{!static:--eh-frame-hdr}
> %{!m32:-m elf_x86_64} %{m32:-m elf_i386} --hash-style=gnu
> %{shared:-shared} %{!shared: %{!static:
> %{rdynamic:-export-dynamic} %{m32:-dynamic-linker
> %{muclibc:/lib/ld-uClibc.so.0;:%{mbionic:/system/bin/linker;:/lib/ld-linux.so.2}}}
> %{!m32:-dynamic-linker
> %{muclibc:/lib/ld64-uClibc.so.0;:%{mbionic:/system/bin/linker64;:/lib64/ld-linux-x86-64.so.2}}}}
> %{static:-static}}
>
> resulting into
>
> *link:
> %{!r:--build-id} --no-add-needed %{!static:--eh-frame-hdr} %{!m32:-m
> elf_x86_64} %{m32:-m elf_i386} --hash-style=gnu %{shared:-shared}
> %{!shared: %{!static: %{rdynamic:-export-dynamic}
> %{m32:-dynamic-linker
> %{muclibc:/lib/ld-uClibc.so.0;:%{mbionic:/system/bin/linker;:/lib/ld-linux.so.2}}}
> %{!m32:-dynamic-linker
> %{muclibc:/lib/ld64-uClibc.so.0;:%{mbionic:/system/bin/linker64;:/lib64/ld-linux-x86-64.so.2}}}}
> %{static:-static}}
>
> 3) Save specs file into compiler's folder
> /usr/lib/gcc/<target>/<version>/ For example, in case of Ubuntu 10.10
> with gcc 4.6.1 it's /usr/lib/gcc/x86_64-linux-gnu/4.6.1/
>
> With this change no unresolvable relocations anymore!
>
> - D.
>
> 2011/10/3 Dmitry N. Mikushin <maemarcus_at_[hidden]>:
>> Hi,
>>
>> Here's a reprocase, the same one as mentioned here:
>> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=608901
>>
>> marcusmae_at_loveland:~/Programming/mpitest$ cat mpitest.f90
>> program main
>> include 'mpif.h'
>> integer ierr
>> call mpi_init(ierr)
>> end
>>
>> marcusmae_at_loveland:~/Programming/mpitest$ mpif90 -g mpitest.f90
>> /usr/bin/ld: /tmp/cc3NLduM.o(.debug_info+0x542): unresolvable
>> R_X86_64_64 relocation against symbol `mpi_fortran_argv_null_'
>> /usr/bin/ld: /tmp/cc3NLduM.o(.debug_info+0x55c): unresolvable
>> R_X86_64_64 relocation against symbol `mpi_fortran_argv_null_'
>> /usr/bin/ld: /tmp/cc3NLduM.o(.debug_info+0x5d2): unresolvable
>> R_X86_64_64 relocation against symbol `mpi_fortran_errcodes_ignore_'
>> /usr/bin/ld: /tmp/cc3NLduM.o(.debug_info+0x5ec): unresolvable
>> R_X86_64_64 relocation against symbol `mpi_fortran_errcodes_ignore_'
>>
>> Remove "-g", and the error will be gone.
>>
>> marcusmae_at_loveland:~/Programming/mpitest$ mpif90 --showme -g mpitest.f90
>> gfortran -g mpitest.f90 -I/opt/openmpi_gcc-1.5.4/include -pthread
>> -I/opt/openmpi_gcc-1.5.4/lib -L/opt/openmpi_gcc-1.5.4/lib -lmpi_f90
>> -lmpi_f77 -lmpi -ldl -Wl,--export-dynamic -lnsl -lutil -lm -ldl
>>
>> marcusmae_at_loveland:~/Programming/mpitest$ mpif90 -v
>> Using built-in specs.
>> COLLECT_GCC=/usr/bin/gfortran
>> COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6.1/lto-wrapper
>> Target: x86_64-linux-gnu
>> Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
>> 4.6.1-9ubuntu3'
>> --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs
>> --enable-languages=c,c++,fortran,objc,obj-c++,go --prefix=/usr
>> --program-suffix=-4.6 --enable-shared --enable-linker-build-id
>> --with-system-zlib --libexecdir=/usr/lib --without-included-gettext
>> --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6
>> --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu
>> --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin
>> --enable-objc-gc --disable-werror --with-arch-32=i686
>> --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu
>> --host=x86_64-linux-gnu --target=x86_64-linux-gnu
>> Thread model: posix
>> gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)
>>
>> 2011/9/28 Dmitry N. Mikushin <maemarcus_at_[hidden]>:
>>> Hi,
>>>
>>> Interestingly, the errors are gone after I removed "-g" from the app
>>> compile options.
>>>
>>> I tested again on the fresh Ubuntu 11.10 install: both 1.4.3 and 1.5.4
>>> compile fine, but with the same error.
>>> Also I tried hard to find any 32-bit object or library and failed.
>>> They all are 64-bit.
>>>
>>> - D.
>>>
>>> 2011/9/24 Jeff Squyres <jsquyres_at_[hidden]>:
>>>> Check the output from when you ran Open MPI's configure and "make all" -- did it decide to build the F77 interface?
>>>>
>>>> Also check that gcc and gfortran output .o files of the same bitness / type.
>>>>
>>>>
>>>> On Sep 24, 2011, at 8:07 AM, Dmitry N. Mikushin wrote:
>>>>
>>>>> Compile and link - yes, but it turns out there was some unnoticed
>>>>> compilation error because
>>>>>
>>>>> ./hellompi: error while loading shared libraries: libmpi_f77.so.1:
>>>>> cannot open shared object file: No such file or directory
>>>>>
>>>>> and this library does not exist.
>>>>>
>>>>> Hm.
>>>>>
>>>>> 2011/9/24 Jeff Squyres <jsquyres_at_[hidden]>:
>>>>>> Can you compile / link simple OMPI applications without this problem?
>>>>>>
>>>>>> On Sep 24, 2011, at 7:54 AM, Dmitry N. Mikushin wrote:
>>>>>>
>>>>>>> Hi Jeff,
>>>>>>>
>>>>>>> Today I've verified this application on the Feroda 15 x86_64, where
>>>>>>> I'm usually building OpenMPI from source using the same method.
>>>>>>> Result: no link errors there! So, the issue is likely ubuntu-specific.
>>>>>>>
>>>>>>> Target application is compiled linked with mpif90 pointing to
>>>>>>> /opt/openmpi_gcc-1.5.4/bin/mpif90 I built.
>>>>>>>
>>>>>>> Regarding architectures, everything in target folders and OpenMPI
>>>>>>> installation is
>>>>>>> ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically
>>>>>>> linked, not stripped
>>>>>>>
>>>>>>> - D.
>>>>>>>
>>>>>>> 2011/9/24 Jeff Squyres <jsquyres_at_[hidden]>:
>>>>>>>> How does the target application compile / link itself?
>>>>>>>>
>>>>>>>> Try running "file" on the Open MPI libraries and/or your target application .o files to see what their bitness is, etc.
>>>>>>>>
>>>>>>>>
>>>>>>>> On Sep 22, 2011, at 3:15 PM, Dmitry N. Mikushin wrote:
>>>>>>>>
>>>>>>>>> Hi Jeff,
>>>>>>>>>
>>>>>>>>> You're right because I also tried 1.4.3, and it's the same issue
>>>>>>>>> there. But what could be wrong? I'm using the simplest form -
>>>>>>>>> ../configure --prefix=/opt/openmpi_gcc-1.4.3/ and only installed
>>>>>>>>> compilers are system-default gcc and gfortran 4.6.1. Distro is ubuntu
>>>>>>>>> 11.10. There is no any mpi installed from packages, and no -m32
>>>>>>>>> options around. What else could be the source?
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> - D.
>>>>>>>>>
>>>>>>>>> 2011/9/22 Jeff Squyres <jsquyres_at_[hidden]>:
>>>>>>>>>> This usually means that you're mixing compiler/linker flags somehow (e.g., built something with 32 bit, built something else with 64 bit, try to link them together).
>>>>>>>>>>
>>>>>>>>>> Can you verify that everything was built with all the same 32/64?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Sep 22, 2011, at 1:21 PM, Dmitry N. Mikushin wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> OpenMPI 1.5.4 compiled with gcc 4.6.1 and linked with target app gives
>>>>>>>>>>> a load of linker messages like this one:
>>>>>>>>>>>
>>>>>>>>>>> /usr/bin/ld: ../../lib/libutil.a(parallel_utilities.o)(.debug_info+0x529d):
>>>>>>>>>>> unresolvable R_X86_64_64 relocation against symbol
>>>>>>>>>>> `mpi_fortran_argv_null_
>>>>>>>>>>>
>>>>>>>>>>> There are a lot of similar messages about other mpi_fortran_ symbols.
>>>>>>>>>>> Is it a known issue?
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>> - D.
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> users mailing list
>>>>>>>>>>> users_at_[hidden]
>>>>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Jeff Squyres
>>>>>>>>>> jsquyres_at_[hidden]
>>>>>>>>>> For corporate legal information go to:
>>>>>>>>>> http://www.cisco.com/web/about/doing_business/legal/cri/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> users mailing list
>>>>>>>>>> users_at_[hidden]
>>>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> users mailing list
>>>>>>>>> users_at_[hidden]
>>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Jeff Squyres
>>>>>>>> jsquyres_at_[hidden]
>>>>>>>> For corporate legal information go to:
>>>>>>>> http://www.cisco.com/web/about/doing_business/legal/cri/
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> users mailing list
>>>>>>>> users_at_[hidden]
>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> users mailing list
>>>>>>> users_at_[hidden]
>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Jeff Squyres
>>>>>> jsquyres_at_[hidden]
>>>>>> For corporate legal information go to:
>>>>>> http://www.cisco.com/web/about/doing_business/legal/cri/
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> users mailing list
>>>>>> users_at_[hidden]
>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>>>>>
>>>>> _______________________________________________
>>>>> users mailing list
>>>>> users_at_[hidden]
>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>>>
>>>>
>>>> --
>>>> Jeff Squyres
>>>> jsquyres_at_[hidden]
>>>> For corporate legal information go to:
>>>> http://www.cisco.com/web/about/doing_business/legal/cri/
>>>>
>>>>
>>>> _______________________________________________
>>>> users mailing list
>>>> users_at_[hidden]
>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>>>
>>>
>>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users

-- 
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/