[FLASH-USERS] Solved [Re: problem building flash (libhdf5)]

Terry Gaetz gaetz at cfa.harvard.edu
Thu Jul 18 16:31:56 EDT 2013


Hi everyone

With further effort I tracked it down.  I was expecting the build script 
to be setting the rpaths, and it wasn't.  (I thought setting up 
HDF5_path and MPI_PATH would be enough.)  In the Makefile.h I changed 
the LIB_HDF5 and LIB_MPI definitions to:
   LIB_HDF5  = -L ${HDF5_PATH}/lib -Wl,-rpath,${HDF5_PATH}/lib -lhdf5 -lz
and
   LIB_MPI   = -L ${MPI_PATH}/lib -Wl,-rpath,${MPI_PATH}/lib -lmpi -lz

to pass the appropriate rpath informtion to ld.  This adds the
appropriate runtime paths to the executable.  (I avoid LD_LIBRARY_PATH
whereever possible.)

Thanks.
Terry

On 07/18/2013 03:54 PM, Terry Gaetz wrote:
>
> This is with FLASH4.0.1 on a linux machine running CentOS 5.9.
>
> I set up for a Sedov test run:
>    ./setup -auto Sedov 2>&1 | tee log.setup_sedov
>    pushd object
>    make 2>&1 | tee log.make
>
> This ends with "SUCCESS".
>
> When I try to run it, though:
>
> geri% ./flash4
> ./flash4: error while loading shared libraries: libhdf5.so.8: cannot
> open shared object file: No such file or directory
>
> ldd shows:
> geri% ldd flash4
>          linux-vdso.so.1 =>  (0x00007fff24fac000)
>          libhdf5.so.8 => not found
>          libz.so.1 => /lib64/libz.so.1 (0x00000034ae800000)
>          libmpi_f90.so.1 => not found
>          libmpi_f77.so.1 => not found
>          libmpi.so.1 => not found
>          libdl.so.2 => /lib64/libdl.so.2 (0x00000034aec00000)
>          libgfortran.so.1 => /usr/lib64/libgfortran.so.1
> (0x00000034b2200000)
>          libm.so.6 => /lib64/libm.so.6 (0x00000034ae400000)
>          librt.so.1 => /lib64/librt.so.1 (0x00000034b2800000)
>          libnsl.so.1 => /lib64/libnsl.so.1 (0x00000034b7e00000)
>          libutil.so.1 => /lib64/libutil.so.1 (0x00000034bca00000)
>          libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000034b4400000)
>          libpthread.so.0 => /lib64/libpthread.so.0 (0x00000034af000000)
>          libc.so.6 => /lib64/libc.so.6 (0x00000034ae000000)
>          /lib64/ld-linux-x86-64.so.2 (0x00000034adc00000)
>
> so indeed the library is not found.  However, the make log shows:
>
>   Linking in Units and Libraries
>   /data/havi0/soft/ots/pkgs/openmpi-1.6.5/x86_64-linux_CentOS-5/bin/mpif90
>   -ggdb -o flash4 Burn.o
>   [...]
>   ut_sysMemSummaryStats.o ut_sys_mem_usage.o workspace.o -L
>   /data/havi0/soft/ots/pkgs/hdf5-1.8.11/x86_64-linux_CentOS-5/lib -lhdf5
>   -lz
>
> and the library does exist at the location given to the -L option:
>
> geri% file
> /data/havi0/soft/ots/pkgs/hdf5-1.8.11/x86_64-linux_CentOS-5/lib/libhdf5.so.8
>
> /data/havi0/soft/ots/pkgs/hdf5-1.8.11/x86_64-linux_CentOS-5/lib/libhdf5.so.8:
>
> symbolic link to `libhdf5.so.8.0.0'
> geri% file
> /data/havi0/soft/ots/pkgs/hdf5-1.8.11/x86_64-linux_CentOS-5/lib/libhdf5.so.8.0.0
>
> /data/havi0/soft/ots/pkgs/hdf5-1.8.11/x86_64-linux_CentOS-5/lib/libhdf5.so.8.0.0:
>
> ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped
>
> Any ideas as to where I am going wrong?  Is there another version of
> hdf5 which should be used?
>
> Thanks,
> Terry Gaetz




More information about the flash-users mailing list