У меня есть исполняемый файл, который работает на OpenSuse 13.2. Он ссылается на общие библиотеки. Некоторые библиотеки поставляются с исполняемым файлом, а другие обнаруживаются в системе. Я пытаюсь проверить, смогу ли я запустить версию, скомпилированную на OpenSuse 13.2, на Ubuntu 14.04. Я устанавливал недостающие библиотеки (например, gfortran, libblas, liblapack), которые я вижу, когда использую 'ldd' на исполняемом файле. Для этого требуются некоторые библиотеки из пакета 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Сингулярностьможет быть лучшим выбором на момент написания этой статьи. Но в вашем случае вам нужно будет построить контейнер приложения на системе Suse 13.2.