В системе Linux я пытаюсь запустить программу Fortran, которая использует некоторые общие библиотеки (netCDF libs, если это имеет значение). Перед запуском я устанавливаю LD_LIBRARY_PATH
так, чтобы он указывал на расположение моих библиотек. Затем я запускаю исполняемый файл и быстро получаю сообщение об ошибке
../my_program: ошибка при загрузке общих библиотек: libnetcdff.so.5: невозможно открыть общий объектный файл: нет такого файла или каталога
Теперь я дважды проверяю значение LD_LIBRARY_PATH
, а затем cd к нему и нахожу просто как день
$ ls *ff*
$ libnetcdff.a libnetcdff.la libnetcdff.so libnetcdff.so.0 libnetcdff.so.0.0.0
Так что libnetcdff абсолютно присутствует.
Может ли кто-нибудь указать мне на проблему?
Единственное, что пришло мне в голову, это то, что исполняемый файл, кажется, хочет найти libnetcdff.so.5, в то время как присутствующая библиотека на самом деле является libnetcdff.so.0. В этом проблема? Если да, то есть ли способ убедить исполняемый файл не настаивать на 5? В качестве альтернативы, может ли ссылка с libnetcdff.so.0 на libnetcdff.so.5 решить проблему? (У меня нет разрешений в каталоге, кстати, поэтому я еще не пробовал.)
Информация об окружении: машина CentOS, код скомпилирован с помощью gfortran. И да, когда я компилировал, мои флаги -L
указывали на тот же каталог, на который указывает LD_LIBRARY_PATH
.
Спасибо.