【问题标题】:OSError with libnetcdf-fortran: undefined symbol带有 libnetcdf-fortran 的 OSError:未定义的符号
【发布时间】:2017-03-23 11:57:23
【问题描述】:

我必须在我的 Linux (Ubuntu 15.10) 上更新一些 Anaconda/Python 软件包,结果我现在收到以下我以前从未见过的错误消息:

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

在 Python 脚本中调用基于 Fortran 的程序时会发生该错误。但是,在没有 Python 的情况下运行相同的程序时,一切正常...

更新后我也重新编译了程序,但没有任何改变。

有人知道这里发生了什么吗?

【问题讨论】:

  • 我认为 anaconda 在其目录结构的某处提供了自己的 netcdf 库版本。也许您正在使用一个动态链接的对象,当从 anaconda 中运行时,该对象期望使用 anaconda lib 版本(可能有额外的符号),但您的 LD_LIBRARY_PATH 或类似意味着它正在获取系统版本(反之亦然) .您能否稍微详细说明一下“基于 fortran”的程序是什么以及如何运行它,即您是否只是在 python 中使用系统调用来运行可执行文件?如果是这样,您可以从 python 和外部 python 执行ldd myExecutable
  • 在英式英语中,program 是指计算机程序及其编程,program 用于该词的所有其他含义。

标签: python fortran gfortran netcdf netcdf4


【解决方案1】:

感谢大家的帮助。该问题是由 ./bashrc 中的 netcdf 库路径设置错误引起的,因此程序(即计算机程序/模型)无法正常工作。现在一切都已解决,程序/模型已启动并运行!

【讨论】:

    【解决方案2】:

    符号 nc_rename_grp 在 libnetcdf.so 中定义。如果您使用子进程运行 FORTRAN 代码,那么您必须按如下方式声明 env:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 2020-02-26
      • 2018-10-01
      • 2020-04-26
      • 2023-04-10
      • 1970-01-01
      • 2018-08-02
      相关资源
      最近更新 更多