【问题标题】:how to fix "cannot open shared object file" in Cshell script?如何修复 Shell 脚本中的“无法打开共享对象文件”?
【发布时间】:2019-05-30 21:59:07
【问题描述】:

我在 Linux 系统上工作并且有一个 Fortran 可执行文件,例如a.exe通过直接执行成功运行。我想在 Cshell 脚本中执行这个 a.exe,但总是报告错误为“加载共享库时出错:libnetcdff.so.6:无法打开共享对象文件:没有这样的文件或目录”

当我执行“ldd a.exe”时,它会向我报告此可执行文件的一些库依赖关系。

libnetcdff.so.6 => /met5/ZR_LOCAL_LIBS/lib/libnetcdff.so.6 (0x00002ab536656000)

库确实存在,我也将路径设置为 $LD_LIBRARY_PATH

a.exe 需要两个输入 $INFILE1、$INFILE2 并将在 $OUTPUT 处生成输出

它可以通过手动键入./a.exe 并提供$INFILE1 和$INFILE2 的路径来执行,但是,当我编写一个简单的Cshell 脚本时:

#!/bin/csh
#
setenv BASE $PWD
setenv PROGNAME a.exe

cd $BASE

setenv INFILE1 $BASE/agtsc_ave_2017.nc
setenv INFILE2 $BASE/agtsc_ave_2029.nc
setenv OUTFILE $BASE/emis_pct_2029_relative_to_2017.nc

if ( -e $OUTFILE ) rm -f $OUTFILE
$BASE/$PROGNAME

它会报告错误: a.exe:加载共享库时出错:libnetcdff.so.6:无法打开共享对象文件:没有这样的文件或目录

我不知道如何调试。谁能帮我解决它?非常感谢!

【问题讨论】:

    标签: linux shell shared-libraries


    【解决方案1】:

    我想我找到了问题所在。我用的是别人的.cshrc,所以有$path问题导致shell脚本找不到对应的库。我删除了旧的 .cshrc 文件并根据我的情况创建了一个新文件,问题就消失了。谢谢。

    【讨论】:

      猜你喜欢
      • 2011-12-23
      • 2014-06-30
      • 2013-04-21
      • 2013-05-05
      • 2020-07-09
      • 2017-05-21
      • 2012-05-24
      • 2014-02-10
      • 2021-01-06
      相关资源
      最近更新 更多