【问题标题】:Netbeans EXE not working when executed from Terminal - CentOs从终端执行时 Netbeans EXE 不工作 - CentOs
【发布时间】:2012-11-07 07:11:05
【问题描述】:

我使用 SASL 制作了 Netbeans 工作环境。示例代码得到构建,它也可以从 Netbeans 正常运行。但是当我尝试从终端运行我的 exe 时,它​​不起作用。错误如下:

./cppapplication_1:加载共享库时出错: libanonymous.so.2:无法打开共享对象文件:没有这样的文件或 目录

我尝试使用以下命令设置 PATH:

导出 PATH=/usr/lib64/sasl2/:$PATH

我仍然遇到同样的错误。我需要什么额外的事情吗?

【问题讨论】:

  • 你可以试试 /usr/lib/sasl2
  • @Anon 我的 .so 文件仅在 /usr/lib64 中

标签: c linux netbeans centos sasl


【解决方案1】:

您需要将libanonymous的路径添加到环境变量LD_LOAD_LIBRARY中。

更新:

这样做:

  1. 定位库,例如:find / -name "libanonymous.so.2"locate libanonymous.so.2
  2. 添加找到的路径,如下所示:export LD_LOAD_LIBRARY=$LD_LOAD_LIBRARY:<path to lib>

更新 1:

从您对 Anon 的回答的评论中,我看到有问题的库位于 /usr/lib64/sasl2/ 下。

所以你可能想像这样设置LD_LOAD_LIBRAY 路径:

export LD_LOAD_LIBRARY=$LD_LOAD_LIBRARY:/usr/lib64/sasl2/

更新 2

这需要在稍后执行需要库的程序 (cppapplication_1) 的同一 shell 中完成。

cd <dir for cppapplication_1>; export LD_LOAD_LIBRARY=$LD_LOAD_LIBRARY:/usr/lib64/sasl2/; ./cppapplication_1

【讨论】:

  • 我有很多这样的 .so 文件。那么如何添加呢?
  • 非常感谢您的更新。但仍然得到相同的响应。
  • 以下所有内容都在 /usr/lib64/sasl2/libanonymous.so.2 => 未找到 libcrammd5.so.2 => 未找到 libdigestmd5.so.2 => 未找到 libgssapiv2.so .2 => 未找到 liblogin.so.2 => 未找到 libplain.so.2 => 未找到 libsasldb.so.2 => 未找到
  • 很抱歉,我也尝试了您的 update2。仍然遇到同样的错误。
  • 您可能想检查条目/usr/lib64/sasl2/libanonymous.so.2是否不仅仅是指向另一个文件的链接,而后者又会丢失。 @2vision2
【解决方案2】:

你也可以试试这个。

ldd <name of executable>

您将看到依赖库及其预期路径。查看 lib 是否存在于可执行文件所期望的路径中。

【讨论】:

  • 我得到了以下 response.linux-vdso.so.1 => (0x00007fff53bff000) libanonymous.so.2 => 未找到 libcrammd5.so.2 => 未找到 libdigestmd5.so。 2 => 未找到 libgssapiv2.so.2 => 未找到 liblogin.so.2 => 未找到 libplain.so.2 => 未找到 libsasldb.so.2 => 未找到 libsasl2.so.2 => /usr /lib64/libsasl2.so.2 (0x00000039f6000000) 但是 libanonymous.so.2 存在于目录“/usr/lib64/sasl2/libanonymous.so.2”中
猜你喜欢
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 2021-03-20
  • 1970-01-01
  • 2013-08-26
  • 2018-06-19
  • 2022-11-30
相关资源
最近更新 更多