【问题标题】:open failed: No such file or directory打开失败:没有这样的文件或目录
【发布时间】:2009-12-22 05:27:09
【问题描述】:

我已经构建了一个独立的可执行文件,它引用了我的 .so 对象。 两者都在同一个目录中。当我尝试运行可执行文件时,它给了我以下错误:

ld.so.1:myExec:致命:libMine.so: 打开失败:没有这样的文件或目录

我做错了什么?

【问题讨论】:

  • export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
  • 我同意,罗杰,SO 1785617 的答案提供了这个问题的答案,但显然它们是简单的重复。
  • 我没有提到重复来贬低 OP;我刚刚找到它,发现它是重复的,并且知道它会很有用。

标签: c++ linux shell linker solaris


【解决方案1】:

Unix 系统不会自动在当前目录中查找 .so 文件。

你可以通过设置LD_LIBRARY_PATH来解决这个问题,但是在正常安装过程中,它们应该安装在系统的适当位置。

另见why you shouldn't make your users use LD_LIBRARY_PATH

【讨论】:

    【解决方案2】:

    是的,正如 Alok 所说,lib 加载路径没有包含 .so 的目录。甚至不假定当前工作目录;它必须在LD_LIBRARY_PATH 中明确列出。

    【讨论】:

      【解决方案3】:

      在运行您的应用程序之前尝试执行以下行:

      export LD_LIBRARY_PATH=.
      

      【讨论】:

      • 这会破坏任何预先存在的值 - 你可能会更好:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.(它扩展了路径,并将当前目录放在最后,这可能更安全一些) .
      猜你喜欢
      • 2013-01-24
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多