Проблемы с подключением к библиотекам openmpi Ubuntu 14.04
У меня есть исполняемый файл, который работает на OpenSuse 13.2. Это ссылки на общие библиотеки. Некоторые библиотеки поставляются с исполняемым файлом, а другие обнаруживаются в системе. Я пытаюсь выяснить, могу ли я запустить версию, скомпилированную в OpenSuse 13.2 в Ubuntu 14.04. Я устанавливал недостающие библиотеки (такие как gfortran, libblas, liblapack), которые я вижу, когда использую 'ldd' в exectuable. Требуется несколько библиотек из пакета openmpi. Я использовал: sudo apt-get install openmpi-bin libopenmpi-dev
Однако исполняемый файл не может найти 2 библиотеки:
libmpi_usempi.so.1
libmpi_mpifh.so.2
В OpenSuse, если я использую 'ldd' в тех библиотеках, которые они содержат: 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)
Я новичок в концепции перемещения программного обеспечения между системами и связи с доступными общими библиотеками. Если исполняемый файл не может найти эти две библиотеки после установки пакета openmpi в Ubuntu 14.04, должен ли я заключить, что эта программа не может быть перенесена в Ubuntu из OpenSuse?
1 ответ
Вы не можете просто скопировать исполняемый файл или двоичный файл из одного дистрибутива в другой. Если вам повезет, это сработает, бюст в основном провалится.
Если у вас есть исходный код, вы можете перекомпилировать программное обеспечение в Ubuntu, что должно заставить его работать.
Также есть определенные усилия по созданию контейнеров приложений, которые будут работать в любом дистрибутиве. Я думаю, что для материала, связанного с MPI, Singularity может быть лучшим выбором на момент написания этой статьи. Но вам нужно собрать контейнер приложения в системе Suse 13.2 в вашем случае.