OSError с libnetcdf-fortran: неопределенный символ

Мне пришлось обновить некоторые пакеты Anaconda/Python в моем Linux (Ubuntu 15.10), и в результате я получаю следующее сообщение об ошибке, которого никогда раньше не видел:

OSError: /usr/lib/x86_64-linux-gnu/libnetcdff.so.6: undefined symbol:nc_rename_grp

Ошибка возникает при вызове программы на языке Fortran в скрипте Python. Однако при запуске той же программы без Python все работает отлично...

Я тоже пересобирал программу после обновлений, но ничего не изменилось.

Кто-нибудь знает, что здесь происходит?


person Jannis    schedule 09.11.2016    source источник
comment
Я думаю, что anaconda предоставляет свою собственную версию библиотеки netcdf где-то в своей структуре каталогов. Возможно, вы работаете с динамически связанным объектом, который при запуске из anaconda предполагает использовать версию библиотеки anaconda (которая может иметь дополнительные символы), но ваш LD_LIBRARY_PATH или аналогичный означает, что он выбирает системную версию (или наоборот). Не могли бы вы немного уточнить, что такое программа на основе фортрана и как вы ее запускаете, то есть вы просто используете системный вызов в python для запуска исполняемого файла? Если это так, вы можете сделать ldd myExecutable из python и из-за пределов python.   -  person d_1999    schedule 09.11.2016
comment
В британском английском слово программа относится к компьютерным программам и их программированию, а программа используется для всех других значений этого слова.   -  person Vladimir F    schedule 09.11.2016


Ответы (2)


Символ nc_rename_grp определен в libnetcdf.so. Если вы используете код FORTRAN с использованием подпроцесса, вам нужно будет объявить env следующим образом:

env["LD_LIBRARY_PATH"] = "/usr/lib/x86_64-linux-gnu"
h = subprocess.Popen(cmd,env=env)
person BChow    schedule 09.11.2016

Спасибо всем за вашу помощь. Проблема была вызвана неправильно заданным путем к netcdf-библиотекам в ./bashrc и, следовательно, программа (то есть компьютерная программа/модель) не работала должным образом. Теперь все решено, программа/модель запущена!

person Jannis    schedule 15.11.2016