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

时间:2020-07-29 10:07:22

标签: c++ linux wxwidgets

我重新安装了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 以下

的输出
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- 如果您想访问二进制文件本身和源代码。

谢谢您!

2 个答案:

答案 0 :(得分:1)

您必须安装这些库。

错误提示丢失(找不到)。

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

如果您想知道哪个软件包提供了文件,可以安装和更新(以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安装它们,至少可以从源代码进行编译:libs,program等...

(评论后有解释。)

实际上,您正在使用已编译的程序,我得到的输出完全相同:

 
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可执行文件可能只是将您的所有硬盘信息发送给任何人。

也就是说,要运行该程序,您只需按照我说的做即可: install 缺少的库,或者编译并安装所有它们。 (不需要分发任何东西。)

答案 1 :(得分:1)

@Manuel

嗨,

您不必编译并安装程序所使用的库。

当您说您编译了wxWidgets 3.1.4时,是否表示您已运行:

configure <set_of_options>
make
make install
ldconfig

或者您只是跑了

configure
make

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

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

这样,分发脚本将处理程序具有的每个依赖项。该脚本还将满足将所需的库升级到较新版本的需要-这些库的维护者将必须重新编译您的软件,确保其按预期运行,标记为稳定并可以使用它。然后他们将适当地更新分发脚本。

最后-在* nix上分发不是您的任务,而是编写/更新这样的分发脚本是分发维护人员的任务。或编写适当的文档/示例,以便您可以执行此操作并提交给分发维护人员,以将其包含在其程序包树中。

我希望现在更加清楚。

[编辑]

在上一个答案中引用您的回答之一:

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

[/ EDIT]

相关问题