繁体   English   中英

加载共享库时出错:libwx_gtk3u_core-3.1.so.3:无法打开共享 object 文件:没有这样的文件或目录

[英]error while loading shared libraries: libwx_gtk3u_core-3.1.so.3: cannot open shared object file: No such file or directory

我全新安装了 Ubuntu 18.04.4LTS 和 wxWidgets 3.1.4。 当我尝试执行 wxWidgets 二进制文件时: ./gpCalculator

我收到错误消息:
./gpCalculator: error while loading shared libraries: libwx_gtk3u_core-3.1.so.3: cannot open shared object file: No such file or directory

这是下面ldd./gpCalculator 的ldd./gpCalculator

linux-vdso.so.1 (0x00007ffcabd9c000)
libwx_gtk3u_core-3.1.so.3 => not found
libwx_baseu-3.1.so.3 => not found
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007faa0bf17000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007faa0bcff000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007faa0b90e000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007faa0b570000)
/lib64/ld-linux-x86-64.so.2 (0x00007faa0c524000)

任何建议或帮助将不胜感激。 这是一个学校项目。 gitub 存储库是https://github.com/alvindera97/Engineering-Grade-Pending-C-如果您想访问二进制文件本身和源代码。

谢谢期待!

您必须安装这些库。

错误说丢失(找不到。)

libwx_gtk3u_core-3.1.so.3 => not found
libwx_baseu-3.1.so.3 => not found

安装命令:

apt-get install libwxgtk-webview3.0-gtk3-0v5 libwxgtk-media3.0-gtk3-0v5

如果你想知道哪个 package 提供了一个文件,你可以安装和更新(作为 root):

root@desktop:~# apt-get install apt-file
root@desktop:~# apt-file update

并找到:

manuel@desktop:~/projects$ apt-file find wx_gtk3u

libwxgtk-media3.0-gtk3-0v5: /usr/lib/x86_64-linux-gnu/libwx_gtk3u_media-3.0.so.0
libwxgtk-media3.0-gtk3-0v5: /usr/lib/x86_64-linux-gnu/libwx_gtk3u_media-3.0.so.0.4.0
libwxgtk-media3.0-gtk3-dev: /usr/lib/x86_64-linux-gnu/libwx_gtk3u_media-3.0.so
libwxgtk-webview3.0-gtk3-0v5: /usr/lib/x86_64-linux-gnu/libwx_gtk3u_webview-3.0.so.0
libwxgtk-webview3.0-gtk3-0v5: /usr/lib/x86_64-linux-gnu/libwx_gtk3u_webview-3.0.so.0.4.0
libwxgtk-webview3.0-gtk3-dev: /usr/lib/x86_64-linux-gnu/libwx_gtk3u_webview-3.0.so

这为您提供了包: libwxgtk-media3.0-gtk3-0v5libwxgtk-webview3.0-gtk3-dev其中出现了该名称。

如果您使用的是已编译的二进制文件(程序),则必须安装用于在原始 linux 安装(相同版本或更现代的版本)中编译该程序的库。

如果你不能安装那些,至少,Linux,你可以从源代码编译所有:库,程序等......

(一些评论后的解释。)

事实上,你正在使用编译后的程序,而我有完全相同的 output:

 
manuel@desktop:~/projects/Engineering-Grade-Pending-C- (master)$ ./gpCalculator 
./gpCalculator: error while loading shared libraries: libwx_gtk3u_core-3.1.so.3: cannot open shared object file: No such file or directory

检查回购协议给出:

manuel@desktop:~/projects/Engineering-Grade-Pending-C- (master)$ l
total 8,1M
-rw-r--r-- 1 manuel manuel 230K jul 29 23:10 gp_and_cgpa_calculator.cpp
-rwxr-xr-x 1 manuel manuel 597K jul 29 23:10 gpCalculator*
-rw-r--r-- 1 manuel manuel 7,3M jul 29 23:10 gpCalculator.exe
-rw-r--r-- 1 manuel manuel 1,2K jul 29 23:10 README.md

gpCalculator是找不到库的可执行文件。

问题不在于编译或分发,问题在于您永远不应该从您不了解和不信任的来源运行软件。 如果你想运行它,只需获取源代码,编译并使用它。

这个gpCalculator可执行文件可能只是将您所有的硬盘驱动器信息发送给任何人。

话虽这么说,要运行该程序,您只需按照我所说的进行操作:安装缺少的库或编译并安装所有这些库。 (不需要分发任何东西。)

@曼纽尔

你好,

您不必编译和安装用于构建程序的库。

当你说你编译了 wxWidgets 3.1.4 时,这是否意味着你运行了:

configure <set_of_options>
make
make install
ldconfig

或者你只是跑了:

configure
make

现在,所有不同的 Linux 发行版(和 Unix 发行版)都有自己的存储库。 每个 *nix 发行版都有自己的方式从所述发行版中获取软件包。 每个 *nix 发行版与软件包的工作方式不同,在此发行版中将它们标记为stable ,以便用户进行升级。

因此,对于开发人员来说,创建不同的方式在 *nix 上分发应用程序“是一场噩梦”。 因此 *nix 开发人员可以创建分发脚本和/或要求 *nix 维护人员将他们的软件包含在存储库中。

这样分发脚本将处理程序的每个依赖项。 该脚本还将处理将所需库升级到较新版本的需要——这些库的维护者将不得不重新编译您的软件,确保它按预期工作,将其标记为稳定并完成它。 然后他们将适当地更新分发脚本。

最后 - 在 *nix 上分发不是你的任务,分发维护者的任务是编写/更新这样的分发脚本。 或者编写一个适当的文档/示例,以便您可以这样做并提交给分发维护者以将其包含在他们的 package 树中。

我希望现在更清楚了。

[编辑]

引用您对上一个答案的回应之一:

在这一点上,我不知道是否仍然可以运行同一个应用程序。 因为我有源代码和安装的 wxWidgets,所以我能够将二进制文件重新编译成一个新文件并运行程序,源代码是用 wxWidgets3.1.3 编写和编译的,但是我安装了 wxWidgets3.1.4 但我没有试图重新编译。 我只是想运行二进制文件。 如果我想在另一个 linux 安装上运行这个程序,这是否意味着我必须重新安装 wxWidgets 并重新编译程序? 我真的很困惑。 谢谢

[/编辑]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM