【问题标题】:error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory加载共享库时出错:libclntsh.so.11.1:无法打开共享对象文件:没有这样的文件或目录
【发布时间】:2016-04-10 10:35:33
【问题描述】:

我正在制作一个连接 oracle 数据库的 C 程序。我已经正确安装了 Oracle Instant Client 和 ocilib。

我确实编译了代码而没有任何错误,但是当我执行程序时出现以下错误。

./a.out: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory

如果有人知道如何解决,请写出来 谢谢你。

【问题讨论】:

  • 您是否执行了the installation instructions 的第 3 步?显示您使用的编译/链接命令以及您平台的相关环境变量可能会有所帮助。

标签: c oracle oracle11g oracle-call-interface


【解决方案1】:

您需要设置 LD_LIBRARY

export LD_LIBRARY_PATH=/path/instantclient:$LD_LIBRARY_PATH

喜欢

export LD_LIBRARY_PATH=/oracle/instantclient_21_4:$LD_LIBRARY_PATH

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

是的,我通过将库的链接添加到 /usr/lib 来解决它。

使用以下命令。

sudo ln -s /home/INSTANT_CLIENT/lib/libclntsh.so.11.1 /usr/lib/libclntsh.so.11.1

【讨论】:

    【解决方案3】:

    从我这里的答案复制:Eclipse CDT Auto Include Shared Libraries

    以 root 身份运行 ldconfig 以更新缓存 - 如果仍然没有 帮助,您需要添加文件 ld.so.conf 的路径(只需输入 在自己的行上)或者更好的是,将条目添加到新文件中(更容易 删除)在目录 ld.so.conf.d.

    【讨论】:

      【解决方案4】:

      LIBPATH 环境变量应该指向包含 libclntsh 的 lib32 文件夹。

      那么您需要在运行应用程序之前导出 LIBPATH 变量。

      【讨论】:

        【解决方案5】:

        确保已安装示例 CD。 确保环境变量 LD_LIBRARY_PATH 已设置,并且您登录的用户可以访问库文件(许可方式)。

        如果您检查了这些并仍然收到错误,请发布以下输出: strace ./a.out

        【讨论】:

          猜你喜欢
          • 2015-06-07
          • 2011-02-12
          • 2019-02-16
          • 2015-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-08
          相关资源
          最近更新 更多