加载共享库时出错:?:无法打开共享对象文件:没有这样的文件或目录

2024-01-20

我正在尝试诊断(并修复)位于多个组件边界上的问题;非常感谢任何有关如何获取更多信息或彻底解决问题的见解。

我有一个应用程序,它作为 C 程序启动,可以启动 Java 程序,然后可以以递归方式启动相同的 C 程序。它已经在 Linux 和 Cygwin 上运行。Java 中的程序启动范例中发现了一些错误,并将其从更简单的 Runtime 策略更新为(1.5 中新增的)ProcessBuilder 策略。由于各种不正当的原因,它使用 -c 选项启动 bash,后跟任何内容这是需要调用的。它可以在 Linux 上运行,但是当移植到 Cygwin 时,它会失败,如下所述。不幸的是,我不小心删除了正在运行的 Cygwin 实例,因此我无法轻易辨别问题是否仅仅是配置问题还是更深层次的问题。

根据记录,我不认为 Cygwin 有任何问题,但我不确定,因为我同时愚蠢地更新了 Cygwin。 (什么was我在想?!)

当 Java 尝试启动 C 程序时,会出现该错误。总是出现完全相同的错误:

加载共享库时出错:?:无法打开共享对象 文件:没有这样的文件或目录

在 cygwin 中对这个错误的研究几乎没有产生任何结果,只有这个:
http://cygwin.com/ml/cygwin/2012-03/msg00396.html http://cygwin.com/ml/cygwin/2012-03/msg00396.html

值得注意的是,运行属于标准 Cygwin 发行版一部分的映像的测试可以正常运行和工作。相比之下,程序bs.exe是在Cygwin环境中编译和链接的。

我正在考虑的一些事情是,是否可能存在我未包含在环境中的环境变量,但它应该继承调用者的环境,并且我没有看到我曾经在 cygwin 环境中使用过任何类型的 LD_LIBRARY_PATH过去并没有注意到文献中有任何类似的参考文献。然后是 Java 策略,但与以前相比没有任何改变,当我将 cygwin 添加到文件中时,它没有帮助。

...我已经没有主意了...有人吗?

更新:以下是 Java 中 ProcessBuilder 代码的代码摘录:

public results ExecuteProgram(String program, String log)
{
   results r = new results();
   boolean returnString = false;
   if (Empty(log)) { log = getTempFile(); }
   File lf = null;
   ProcessBuilder pb;
   r.OK = true;
   r.err = "Unable to Run program: ";
   int status = 0; //Note that 0 = success!
   // Before we get here, we know the first space delimited substring
   // of the program string already has the full path to the program. The
   // rest (if any) are arguments.

   try
   { 
      // Shell contains something like /bin/bash, depending on the system
      //
      pb = new ProcessBuilder(Shell, "-c", program);

      // Map<String, String> env = pb.environment();
      // env.remove("PATH");
      // env.put("PATH", Path);
      // env.remove("CLASSPATH");
      // env.put("CLASSPATH", CLASSPATH);
      // env.remove("LD_LIBRARY_PATH");
      // env.put("LD_LIBRARY_PATH", LD_LIBRARY_PATH);
      // ALSO DO:
      // LD_LIBRARY_PATH

      pb.directory(new File(wd));
      pb.redirectErrorStream(true);
      lf = new File(log); 
      pb.redirectOutput(Redirect.appendTo(lf)); 
      Process p = pb.start();
      assert p.getInputStream().read() == -1;
      if (!returnString)
      {
         assert pb.redirectInput() == Redirect.PIPE;
         assert pb.redirectOutput().file() == lf;
      }
      r.err = "OS Process started."; 
      r.OK = true; 
      try 
      {   
         r.Status = p.exitValue(); 
         r.err = "OS Process completed."; 
      }   
      catch (IllegalThreadStateException e)   
      {   
      }   
   }
   catch (IOException e)
   {
      r.err += "\nIOException while accessing IO stream: "+
       e.toString();
      r.OK = false;
   }
   if ((r.Status == 0) && (r.OK))
   {
      r.err = "Success";
   } else {
      if (r.Status != 0)
      {
         r.err += "Process exit status: "+r.Status;
      }
      System.out.print(r.err);
   }
   return r;
}

哦,是的,按照惯例, cygcheck -s 信息如下,被剪掉了一点。由于整个数据集很大并且可能无趣,因此可以根据要求提供更多信息。

Cygwin 配置诊断当前系统时间: 12 月 5 日星期四 04:08:40 2013 Windows 7 Professional N 版本 6.1 内部版本 7600
在 AMD64 上的 WOW64 下运行 路径:C:\Program 文件\Java\jdk1.7.0\bin C:\opt\bin C:\cygwin\usr\local\bin C:\cygwin\bin C:\Program Files (x86)\Android\android-sdk\platform-tools C:\Program Files\PostgreSQL\9.3\bin C:\Program Files\Java\jdk1.7.0\bin C:\Program Files (x87)\PC 连接解决方​​案 C:\windows\system32 C:\Windows C:\windows\System32\Wbem C:\windows\System32\WindowsPowerShell\v1.0 C:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn C:\Program Files (x86)\Toshiba\Bluetooth Toshiba Stack\sys C:\Program Files (x86)\Toshiba\Bluetooth Toshiba Stack\sys\x64 C:\Program Files\Intel\WiFi\bin C:\Program Files\Common Files\Intel\WirelessCommon C:\cygwin\bin C:\Program Files\PostgreSQL\9.3\bin C:\cygwin\lib\lapack

Cygwin DLL version info: 
    DLL version: 1.8.4 
    DLL epoch: 19 
    DLL old termios: 5 
    DLL malloc env: 28
    Cygwin conv: 181 
    API major: 0 
    API minor: 262 
    Shared data: 5 
    DLL identifier: cygwin1 
    Mount registry: 3 
    Cygwin registry name: Cygwin 
    Program options name: Program Options
    Installations name: Installations  
    Cygdrive default prefix:
    Build date:
    Shared id: cygwin1S5
      <snip>

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

加载共享库时出错:?:无法打开共享对象文件:没有这样的文件或目录 的相关文章

随机推荐

  • 如何国际化/本地化您的 FCM 推送通知,尤其是主题?

    我想使用 Firebase 向本地化的 Android 和 iOS 设备发送推送通知 我意识到我们并没有真正的解决方案来向订阅的主题发送本地化消息 假设我有一条消息 朝鲜领导人威胁关岛 我想将其发送给订阅 新闻 主题的人 并且有 1000
  • 无法通过 GET 请求发送具有此动词类型的内容正文

    我当前正在通过 WebApi 接收请求 并尝试将其重新发送到另一个站点 目标是接收请求 例如 http localhost 9999 q 测试 http localhost 9999 q test 然后将其转发到真实站点 对于我的测试 我设
  • 如何在android中将字节数组(.h264格式)解码为视频?

    在我的应用程序中 我必须将字节数组 即 h264 格式 解码为视频和来自直播的字节数组 代码如下 static final int VIDEO BUF SIZE 100000 static final int FRAME INFO SIZE
  • Jupyter 笔记本内存管理

    我目前正在 kaggle 中开发 jupyter 笔记本 在我的 numpy 数组上执行所需的转换后 我将其腌制以便可以将其存储在磁盘上 我这样做的原因是为了释放大数组消耗的内存 pickle 阵列后消耗的内存约为 8 7 GB 我决定运行
  • 游戏框架架构——视图组件还是MVC?

    我正在尝试为我的游戏构建一个非常轻量级的可重用框架 而不是每次开始游戏时都从头开始 我有一个组件驱动的架构 例如实体由Position组件 Health组件 Ai组件等组成 我最大的问题是我的模型组成视图组件允许模型有多个视图 或者是否使用
  • 如何在 R 中绘制度分布

    我想知道绘制度分布的脚本的输出是否正确 所以脚本是 其中带有我所有顶点度数的向量存储在 x 中 x is x 1 7 9 8 5 6 2 8 9 7 5 2 4 6 9 2 6 10 8 x 是某个网络顶点的度数 例如顶点 1 的度数为 7
  • React Native 适用于互联网带宽较低的小尺寸 apk

    我计划为互联网带宽较低的新兴市场开发一款应用程序 该应用程序严重需要互联网连接才能运行 我需要这个应用程序有一个小的 apk 大小 不超过10mb 并继续努力3G网络 根据我的研究 如果我删除x86来自 React Native 的 JS
  • 有没有好的 PostgreSQL linux 客户端? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我对 PostgreSQL 没有一个好的 Linux GUI 管理和开发工具感到沮丧 与仅限 Windo
  • 将子字符串包裹在 标签中,而无需在替换时创建嵌套标签

    我有一个单词数组 用于突出显示字符串中的单词 但是有些单词可能会作为短语的一部分出现 因此我希望该短语优先于突出显示中的单个单词 例如 seo apple apple tree orchard description In my orcha
  • 在 mySQL 中存储 javascript Date()

    我目前有一个 javascript 变量 它记录当前日期和时间 如下所示 var time of call time of call new Date 我需要将它存储在 MySQL 数据库中 当我尝试上传它时 该列仅显示为空白 但我不确定我
  • Node.js - 每个 Express 请求的域,在另一个域内

    Node js 中的错误处理啊 我正在尝试布局一个像这样的基本 Node 应用程序 集群 gt Worker gt 服务器域 gt 快速请求域 因此 如果由于有人在登录表单上拼错了自己的名字而将错误抛出到调用堆栈的 18 层深处 则整个服务
  • 在线程中更改Python“请求”模块的连接池大小

    编辑 也许我对这个错误的含义是错误的 这是否表明我的客户端的连接池已满 或者服务器的连接池已满 这是我的客户端收到的错误 我正在尝试制作大量http使用 python 并发请求threading and requests模块 我在日志中看到
  • Linux 上的 C++ 开发 Code::Blocks、EMACS 或 GVIM [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在多个项目之间共享声明式管道

    我在不同的存储库中有很多项目 它们共享相同的基本 CI 工作流程 我可以轻松地将其表达为声明式管道 pipeline agent any options buildDiscarder logRotator numToKeepStr 20 s
  • 使用相同关键字并条件 Django 查询

    我有一个带有发布模型和标签模型的 Django 应用程序 每份出版物都有一个或多个与其关联的标签 我想使用一组两个标签查询数据库 并且仅返回同时具有这两个标签的出版物 尽管我确信它很容易获得 但我似乎找不到它的语法 我想我没有使用正确的语言
  • 为什么我的应用程序没有绘制任何东西?

    我对 C 一般编程 非常陌生 阅读了 3 周的经验 从 html css 和 javascript 开始 现在开始使用 C 我正在尝试以 Windows 形式制作自己的简单 绘画 应用程序 但我遇到了一个问题 只是无法解决它 无论我阅读或遵
  • 如何在 Javascript 中替换字符串中的撇号?

    给定一个 Javascript 中的字符串 例如 var str this s kelly 我想用另一个字符替换撇号 这是我到目前为止所尝试过的 str replace quot A str replace A 这些都不起作用 我该怎么做
  • 追踪有用信息

    这里聪明的程序员如何跟踪他们在多年的经验中获得的方便的编程技巧和有用的信息 诸如有用的编译器参数 IDE 快捷方式 巧妙的代码片段等 当我查找一两年前我曾经知道的东西时 我有时会感到沮丧 我最喜欢的 IE 可能代表了 20 世纪 90 年代
  • Linq 多个 OR 与列表

    我目前正在开发一个使用 LINQ 的 C 项目 我想知道是否可以使用 Linq 创建一个 多个 OR 子句 并将列表作为 where 的条目 我的意思是这样的 var listofId var sqlQuery from T in myta
  • 加载共享库时出错:?:无法打开共享对象文件:没有这样的文件或目录

    我正在尝试诊断 并修复 位于多个组件边界上的问题 非常感谢任何有关如何获取更多信息或彻底解决问题的见解 我有一个应用程序 它作为 C 程序启动 可以启动 Java 程序 然后可以以递归方式启动相同的 C 程序 它已经在 Linux 和 Cy