【发布时间】:2019-07-02 12:58:06
【问题描述】:
我使用 /home/ 中的 Fedora 在我的计算机上从源代码安装了 wxWidgets 3.1.2... 我正在尝试从 https://docs.wxwidgets.org/stable/overview_helloworld.html 构建和运行一个 Hello world 示例。它通过键入编译而没有任何错误
g++ widgetTest.cpp `wx-config --cxxflags --libs` -o widgetTest
但是在./widgetTest 之后,我的shell 中得到了./widgetTest: error while loading shared libraries: libwx_gtk2u_xrc-3.1.so.2: cannot open shared object file: No such file or directory。
stackoverflow 中的一个答案是在/usr/lib 中复制整个库,我做到了。然后它不起作用,我又得到了同样的结果。
(gtk2-devel和gtk3-devel我在安装wxWidgets之前已经安装好了)
ldd ./widgetTest 返回:
linux-vdso.so.1 (0x00007ffeacdcf000)
libwx_gtk2u_xrc-3.1.so.2 => not found
libwx_gtk2u_html-3.1.so.2 => not found
libwx_gtk2u_qa-3.1.so.2 => not found
libwx_gtk2u_core-3.1.so.2 => not found
libwx_baseu_xml-3.1.so.2 => /lib64/libwx_baseu_xml-3.1.so.2 (0x00007ffa3faea000)
libwx_baseu_net-3.1.so.2 => /lib64/libwx_baseu_net-3.1.so.2 (0x00007ffa3fa9a000)
libwx_baseu-3.1.so.2 => /lib64/libwx_baseu-3.1.so.2 (0x00007ffa3f7e9000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007ffa3f651000)
libm.so.6 => /lib64/libm.so.6 (0x00007ffa3f4cd000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ffa3f4b2000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffa3f490000)
libc.so.6 => /lib64/libc.so.6 (0x00007ffa3f2ca000)
libexpat.so.1 => /lib64/libexpat.so.1 (0x00007ffa3f28b000)
libz.so.1 => /lib64/libz.so.1 (0x00007ffa3f271000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007ffa3f26b000)
libsecret-1.so.0 => /lib64/libsecret-1.so.0 (0x00007ffa3f214000)
libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007ffa3f1be000)
libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007ffa3f09e000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007ffa3f073000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffa3fb26000)
libgcrypt.so.20 => /lib64/libgcrypt.so.20 (0x00007ffa3ef55000)
libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007ffa3ef32000)
libgio-2.0.so.0 => /lib64/libgio-2.0.so.0 (0x00007ffa3ed86000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007ffa3ed13000)
libffi.so.6 => /lib64/libffi.so.6 (0x00007ffa3ed06000)
libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x00007ffa3ed00000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007ffa3ecd3000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007ffa3ecb9000)
libmount.so.1 => /lib64/libmount.so.1 (0x00007ffa3ec5c000)
libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007ffa3ebd4000)
libblkid.so.1 => /lib64/libblkid.so.1 (0x00007ffa3eb81000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007ffa3eb78000)
librt.so.1 => /lib64/librt.so.1 (0x00007ffa3eb6e000)
【问题讨论】:
-
您能否编辑您的问题以包含来自
wx-config --cxxflags --libs的输出?你在哪里安装库(在哪个目录中,例如libwx_gtk2u_xrc-3.1.so.2)? -
在执行库之前在终端中尝试
export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH -
@MikevanDyke 不起作用(相同)
-
我说得对吗
libwx_gtk2u_xrc-3.1.so.2是一种(某种)依赖关系? -
它是一个共享库,用于针对源文件进行构建。
wc-config...的输出有一个-lwx_gtk2u_xrc标志(或其他单位,我们不知道,因为你没有发布),它指示 gcc 链接到库。检查您的系统上是否有libwx_gtk2u_xrc-3.1.so*文件,在 /usr/lib 或 /lib 或 /usr/lib64 或 /usr/local/lib 等。如果没有,请安装它。