[mpich-devel] --enable-wrapper-rpath not working

Kenneth Raffenetti raffenet at mcs.anl.gov
Wed Dec 17 16:00:34 CST 2014


We've got an open bug related to using the Intel Fortran compiler on OSX.

http://trac.mpich.org/projects/mpich/ticket/2024

What's missing from that bug description is that it appears that the 
convenience libraries (mpl, romio, etc.) are not properly embedded when 
linking with ifort on OSX. Your error output below is consistent with 
this issue. Is it possible to disable fortran in your MPICH build in 
this instance? That would at least confirm the source of the problem.

Ken

On 12/17/2014 02:28 PM, Jeff Hammond wrote:
> This is what I do right now to get it working:
>
> ../configure --prefix=/Users/jrhammon/Work/MADNESS/install-intel
> CC=icc CXX=icpc --with-tbb=/opt/intel/composer_xe_2015/tbb --with-mkl
> CPPFLAGS=-I/opt/mpich/dev/intel/default/include
> LDFLAGS=/opt/mpich/dev/intel/default/lib/libmpicxx.a
> /opt/mpich/dev/intel/default/lib/libmpi.a
> /opt/mpich/dev/intel/default/lib/libpmpi.a MPICC=icc MPICXX=icpc
>
> If I do the more straightforward invocation:
>
> ../configure --prefix=/Users/jrhammon/Work/MADNESS/install-intel
> CC=icc CXX=icpc --with-tbb=/opt/intel/composer_xe_2015/tbb --with-mkl
> MPICC=/opt/mpich/dev/intel/default/bin/mpicc
> MPICXX=/opt/mpich/dev/intel/default/bin/mpicxx
>
> Then configure fails like this:
>
> mpicc
> configure:5840: checking that the
> /opt/mpich/dev/intel/default/bin/mpicc linker works
> configure:5853: /opt/mpich/dev/intel/default/bin/mpicc -o conftest -g
> -O2   conftest.c  >&5
> Undefined symbols for architecture x86_64:
>    "_MPIO_Err_return_file", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPIR_ROMIO_Get_file_errhand", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPIR_ROMIO_Set_file_errhand", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPIX_File_iread_all", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPIX_File_iread_at_all", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPIX_File_iwrite_all", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPIX_File_iwrite_at_all", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_c2f", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_close", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_delete", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_f2c", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_get_amode", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_get_atomicity", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_get_byte_offset", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_get_group", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_get_info", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_get_position", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_get_position_shared", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_get_size", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_get_type_extent", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_get_view", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_iread", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_iread_at", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_iread_shared", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_iwrite", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_iwrite_at", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_iwrite_shared", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_open", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_preallocate", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_read", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_read_all", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_read_all_begin", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_read_all_end", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_read_at", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_read_at_all", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_read_at_all_begin", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_read_at_all_end", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_read_ordered", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_read_ordered_begin", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_read_ordered_end", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_read_shared", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_seek", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_seek_shared", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_set_atomicity", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_set_info", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_set_size", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_set_view", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_sync", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_write", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_write_all", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_write_all_begin", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_write_all_end", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_write_at", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_write_at_all", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_write_at_all_begin", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_write_at_all_end", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_write_ordered", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_write_ordered_begin", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_write_ordered_end", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_File_write_shared", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPI_Register_datarep", referenced from:
>        import-atom in libmpi.dylib
>        import-atom in libpmpi.dylib
>    "_MPL_TrSetMaxMem", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_env2bool", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_env2int", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_env2range", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_env2str", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_large_readv", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_large_writev", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_strncpy", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_trDebugLevel", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_trcalloc", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_trdump", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_trfree", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_trid", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_trinit", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_trlevel", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_trmalloc", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_trrealloc", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_trspace", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_trstrdup", referenced from:
>        import-atom in libpmpi.dylib
>    "_MPL_trvalid", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPIX_File_iread_all", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPIX_File_iread_at_all", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPIX_File_iwrite_all", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPIX_File_iwrite_at_all", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_close", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_delete", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_get_amode", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_get_atomicity", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_get_byte_offset", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_get_group", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_get_info", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_get_position", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_get_position_shared", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_get_size", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_get_type_extent", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_get_view", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_iread", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_iread_at", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_iread_shared", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_iwrite", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_iwrite_at", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_iwrite_shared", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_open", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_preallocate", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_read", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_read_all", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_read_all_begin", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_read_all_end", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_read_at", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_read_at_all", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_read_at_all_begin", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_read_at_all_end", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_read_ordered", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_read_ordered_begin", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_read_ordered_end", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_read_shared", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_seek", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_seek_shared", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_set_atomicity", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_set_info", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_set_size", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_set_view", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_sync", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_write", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_write_all", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_write_all_begin", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_write_all_end", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_write_at", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_write_at_all", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_write_at_all_begin", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_write_at_all_end", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_write_ordered", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_write_ordered_begin", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_write_ordered_end", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_File_write_shared", referenced from:
>        import-atom in libpmpi.dylib
>    "_PMPI_Register_datarep", referenced from:
>        import-atom in libpmpi.dylib
> ld: symbol(s) not found for architecture x86_64
>
> Recall:
>
> /opt/mpich/dev/intel/default/bin/mpicc -show
> icc -Wl,-flat_namespace -I/opt/mpich/dev/intel/default/include
> -L/opt/mpich/dev/intel/default/lib -lmpi -lpmpi
>
> Thanks,
>
> Jeff
>
> On Wed, Dec 17, 2014 at 12:18 PM, Kenneth Raffenetti
> <raffenet at mcs.anl.gov> wrote:
>> AFAICT, the Darwin linker includes the full path to all dynamic libraries
>> needed by the library by default. Rpath flags shouldn't be strictly
>> necessary.
>>
>> mpich-mac1:pt2pt raffenet$ otool -L large_message
>> large_message:
>>          /Users/raffenet/mpich/i/lib/libmpi.0.dylib (compatibility version
>> 1.0.0, current version 1.0.0)
>>          /Users/raffenet/mpich/i/lib/libpmpi.0.dylib (compatibility version
>> 1.0.0, current version 1.0.0)
>>          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
>> version 1213.0.0)
>>
>> The concept of rpath was added in OSX 10.4 apparently, but I don't see much
>> in the way of adoption in other open source projects. Are your binaries
>> running into library not found issues?
>>
>> Ken
>>
>>
>> On 12/17/2014 11:41 AM, Jeff Hammond wrote:
>>>
>>> Am I doing something wrong here?  Why is the rpath option not being
>>> added to the wrapper script?  This issue makes it impossible for me to
>>> use MPICH on my laptop without excessive tedium.
>>>
>>> Thanks,
>>>
>>> Jeff
>>>
>>> mobl:build-intel jrhammon$ /opt/mpich/dev/intel/default/bin/mpichversion
>>> MPICH Version:          3.2a2
>>> MPICH Release date:     unreleased development copy
>>> MPICH Device:           ch3:nemesis
>>> MPICH configure:        CC=icc CXX=icpc FC=ifort F77=ifort
>>> --enable-fortran
>>> --enable-threads=runtime --enable-g=dbg --with-pm=hydra
>>> --prefix=/opt/mpich/dev/intel/default --enable-wrapper-rpath
>>> --enable-static --enable-shared
>>> MPICH CC:       icc    -g -O2
>>> MPICH CXX:      icpc   -g -O2
>>> MPICH F77:      ifort   -g -O2
>>> MPICH FC:       ifort   -g -O2
>>>
>>> mobl:build-intel jrhammon$ /opt/mpich/dev/intel/default/bin/mpicc -show
>>> icc -Wl,-flat_namespace -I/opt/mpich/dev/intel/default/include
>>> -L/opt/mpich/dev/intel/default/lib -lmpi -lpmpi
>>>
>> _______________________________________________
>> To manage subscription options or unsubscribe:
>> https://lists.mpich.org/mailman/listinfo/devel
>
>
>


More information about the devel mailing list