【问题标题】:Cannot run Code::Blocks: libwx_gtk2u-2.8.so.0 not found无法运行代码::块:找不到 libwx_gtk2u-2.8.so.0
【发布时间】:2011-11-04 17:31:15
【问题描述】:

我正在尝试从(非 SVN)源(codeblocks-10.05-src.tar.bz2)安装 Code::Blocks 10.05。我的操作系统是 Ubuntu 11.04。我需要先下载并安装 wxWidgets(我现在有 wxGTK-2.8.12),这似乎可以工作。我根据这些说明编译它:

http://wiki.codeblocks.org/index.php?title=Installing_Code::Blocks_from_source_on_Linux

然后我将 C::B 配置为

./configure --with-wx-config=/opt/wx/2.8/bin/wx-config

跑了

export LDFLAGS="-Wl,-R /opt/wx/2.8/lib"
make
sudo -i
make install

尝试运行 C::B 时,我收到以下错误:

codeblocks: error while loading shared libraries: libwx_gtk2u-2.8.so.0: cannot open shared object file: No such file or directory

这里问了同样的问题:error while loading shared libraries,但建议的解决方案(即将 wxWidgets 配置添加到传递给 configure 的选项中)对我不起作用。

wx-config --prefix 的输出是/opt/wx/2.8

wx-config --libs 的输出是-L/opt/wx/2.8/lib -pthread -lwx_gtk2u-2.8

which wx-config/opt/wx/2.8/bin/wx-config

我查找了该库,发现 /opt/wx/lib/libwx_gtk2u-2.8.so.0 是同一文件夹中的 libwx_gtk2u-2.8.so.0.8.0 的链接。

这里可能有什么问题?

【问题讨论】:

    标签: shared-libraries wxwidgets codeblocks ubuntu-11.04


    【解决方案1】:

    在 Ubuntu 上启动和运行 code::blocks 的最简单方法可能是通过 Synaptic 包管理器安装它。只需在“快速搜索”中输入代码块。在列表中找到代码块,然后右键单击以标记安装。 Synaptic 会根据需要自动处理和安装所需的任何依赖项和缺少的库。

    如果您有兴趣在 Ubuntu 上尝试 C::B nightly 构建,那么您需要查看 Jens' unofficial debian-repository here

    【讨论】:

    • ubuntu 包可以工作,但我在用它们构建 wxWidgets 应用程序时遇到了麻烦。这就是为什么我首先尝试从源代码编译 C::B 和 wxWidgets。我是 wxWidgets 的新手,也许我只是错误地配置了我的项目。尽管如此,这并不能解释为什么自建的 C::B 加载库失败。
    【解决方案2】:

    问题是程序在运行时找不到 WX 小部件库。您需要设置 LD_LIBRARY_PATH 变量以包含 wxWidgets 的位置,如下所示:

    LD_LIBRARY_PATH=/opt/wx/2.8/lib ./codeblocks
    

    它失败的原因是因为你编译的代码块是针对在 /opt/ 中找到的 wxWidgets 而不是安装在 /usr/ 中的那个;该程序不知道在 /opt 中查找 wx 库。

    【讨论】:

      【解决方案3】:

      您可以访问Why do I have to define LD_LIBRARY_PATH with an export every time I run my application? 了解更通用的案例。对于像您这样的特殊情况,您可以按照以下给出的步骤进行操作

      如果您安装了 wxGTK,那么您会在 /usr/local/lib 中看到该文件。当上述路径不是 makefile 的一部分时,您会收到此错误。我在 CentOS 上从源代码构建后启动 wxFormBuilder 时收到此错误。有两种方法。

      方法一:将路径放在.bashrc中

      gedit /home/{你的用户名}/.bashrc

      然后在 # 用户特定别名和函数行之后粘贴以下内容

      导出 $LD_LIBRARY_PATH=/usr/local/lib。

      这可以正常工作,但对于当前登录,但对于像 root 这样的其他用户,您可能必须在相应的 .bashrc 文件中执行相同操作。

      方法2:创建自己的conf文件

      cd /etc/ld.so.conf.d

      gedit wxformbuilder.conf

      提供路径 /usr/local/lib 并保存文件。

      ldconfig(更新库路径)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-04
        • 1970-01-01
        • 1970-01-01
        • 2014-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多