无法运行Code::Blocks:找不到libwx_gtk2u-2.8.so.0。

4
我正在尝试从源代码(codeblocks-10.05-src.tar.bz2)安装Code::Blocks 10.05(非SVN版本)。我的操作系统是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的链接。

这里可能出了什么问题?

3个回答

2

问题在于程序无法在运行时找到WX widgets库。您需要设置LD_LIBRARY_PATH变量,以包含wxWidgets的位置,如下所示:

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

它无法正常工作的原因是您使用/opt/中找到的wxWidgets编译了codeblocks,而不是在/usr/安装的那个。程序不知道在/opt中查找wx库。

1

在Ubuntu上让code::blocks运行起来最简单的方法可能就是通过Synaptic软件包管理器进行安装。只需在“快速搜索”中键入codeblocks即可。找到列表中的codeblocks,右键单击标记为安装。任何所需的依赖项和缺失的库都将由Synaptic自动处理和安装。

如果您有兴趣在Ubuntu上尝试C::B夜间构建版本,则需要查看Jens的非官方Debian存储库


Ubuntu的软件包可以使用,但我在使用它们构建wxWidgets应用程序时遇到了问题。这就是为什么我首先尝试从源代码编译C::B和wxWidgets的原因。我对wxWidgets还很陌生,也许我只是错误地配置了我的项目。尽管如此,这并不能解释为什么自己构建的C::B无法加载库。 - Christoph

0

您可以访问为什么每次运行应用程序都要使用export定义LD_LIBRARY_PATH?以获取更通用的情况。对于像您这样的特定情况,您可以按照以下步骤进行操作:

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

方法1:将路径放入.bashrc中

gedit /home/{your-username}/.bashrc

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

export $LD_LIBRARY_PATH=/usr/local/lib.

这对于当前登录来说很好用,但对于像root这样的其他用户,您可能需要在各自的.bashrc文件中执行相同的操作。

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

cd /etc/ld.so.conf.d 打开 wxformbuilder.conf 文件 添加路径 /usr/local/lib 并保存文件 运行 ldconfig 命令(更新库路径)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接