0

I have an executable that runs on OpenSuse 13.2. It links to shared libraries. Some of the libraries come with the executable, and others are detected on the system. I am trying to see if I can run a version that was compiled on OpenSuse 13.2 on Ubuntu 14.04. I've been installing the missing libraries ( like gfortran, libblas, liblapack) that I see when I use 'ldd' on the exectuable. It requires some libraries from the openmpi package. I used: sudo apt-get install openmpi-bin libopenmpi-dev

The executable can't seem to locate 2 libraries however:

libmpi_usempi.so.1

libmpi_mpifh.so.2

On OpenSuse, if I use 'ldd' on those libraries they contain: libmpi_mpifh.so.2:

linux-vdso.so.1 (0x00007fff433d9000)
libmpi.so.1 => /usr/lib64/mpi/gcc/openmpi/lib64/libmpi.so.1 (0x00007f7b4ccf3000)
libopen-pal.so.5 => /usr/lib64/mpi/gcc/openmpi/lib64/libopen-pal.so.5 (0x00007f7b4ca32000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f7b4c7ea000)
libc.so.6 => /lib64/libc.so.6 (0x00007f7b4c442000)
libopen-rte.so.5 => /usr/lib64/mpi/gcc/openmpi/lib64/libopen-rte.so.5 (0x00007f7b4c1d2000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f7b4bfce000)
librt.so.1 => /lib64/librt.so.1 (0x00007f7b4bdc6000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f7b4bbc2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7b4d212000)

libmpi_usempi.so.1:

linux-vdso.so.1 (0x00007fff9adfc000)
libmpi_mpifh.so.2 => /usr/lib64/mpi/gcc/openmpi/lib64/libmpi_mpifh.so.2 (0x00007f13809a3000)
libmpi.so.1 => /usr/lib64/mpi/gcc/openmpi/lib64/libmpi.so.1 (0x00007f13806d2000)
libopen-pal.so.5 => /usr/lib64/mpi/gcc/openmpi/lib64/libopen-pal.so.5 (0x00007f1380412000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f13801ca000)
libc.so.6 => /lib64/libc.so.6 (0x00007f137fe21000)
libopen-rte.so.5 => /usr/lib64/mpi/gcc/openmpi/lib64/libopen-rte.so.5 (0x00007f137fbb2000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f137f9ae000)
librt.so.1 => /lib64/librt.so.1 (0x00007f137f7a5000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f137f5a2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1380e8c000)

I'm new to the concept of moving software between systems and linking to available shared libraries. If the executable can not locate those two libraries after installing the openmpi package on Ubuntu 14.04, should I conclude that this program can not be ported to Ubuntu from OpenSuse?

3
  • You cannot copy and run a program which was compiled on on a different PC on your target PC (say which runs Ubuntu). In fact even if it was compiled on 14.04 then it would not run because of different possible versions of compilers etc... What is the program you want to use ?
    – ankit7540
    Jun 10, 2017 at 9:23
  • You should most likely build the program from scratch on your Ubuntu PC.
    – ankit7540
    Jun 10, 2017 at 9:25
  • I'm trying to package my software such that it has as much compatibility with other versions of Linux as is possible. Most of the systems share a set of common shared libraries. I was thinking about including the ones that may cause compatibility issues with my distribution so that the system doesn't have trouble locating them.
    – wandadars
    Jun 13, 2017 at 14:10

1 Answer 1

0

You cannot just copy an executable or binary from one distribution to another. If you are lucky it will work, bust mostly will fail.
If you have the source code, you could recompile the software on Ubuntu which should make it work.

There are also some effort in building application containers, that will run on any distribution. I think for MPI related stuff Singularity might be the best choice at the time of this writing. But you will need to build the application container on a Suse 13.2 system in your case.

2
  • I disagree with your assertion. If the shared library dependencies are present across the distributions and the architectures are the same, then binaries should be portable between the distributions. This is one of the strengths of Linux. A reference for portable binaries on Linux: medium.com/square-corner-blog/…
    – wandadars
    Jun 13, 2017 at 14:13
  • Yes, correct. And the point is ... If the shared library dependencies are present across the distributions..., which is the reason why there are efforts in providing Singularity or Snappy. Those will bundle all needed libraries together and make your app distribution independent as they are shipped with the dependencies.
    – Thomas
    Jun 13, 2017 at 15:01

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .