gpt4 book ai didi

C++ 可执行文件在运行时找不到库,即使它位于/usr/lib(在 Linux 上)

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:39 26 4
gpt4 key购买 nike

我正在使用 Ubuntu 上的 Panda3D 框架用 C++ 创建游戏。所有 Panda3D 共享库都在 /usr/lib/panda3d 中,所有头文件都在 /usr/include/panda3d 中。我正在用 SCons 编译,但我已经用 gcc 试过了,结果是一样的,所以这里是命令:

g++ -o src/main.o -c -fPIC -O2 -std=gnu++11 -I/usr/include/python2.7 -I/usr/include/panda3d -Iinclude src/main .cpp

g++ -o 测试 src/main.o -L/usr/lib/panda3d -lp3framework -lpanda -lpandafx -lpandaexpress -lpandabullet -lp3dtoolconfig -lp3dtool -lp3direct -lpthread

这是我在运行可执行文件时遇到的错误:

./Test:加载共享库时出错:libp3framework.so.1.11:无法打开共享对象文件:没有这样的文件或目录

代码不多,只是初始化一个 Panda3D 窗口,所以我怀疑这是罪魁祸首。

正如我之前所说,这些库位于 /usr/lib/panda3d 中,我现在已经检查了大约一百万次,这让我发疯。我想不出我会收到此错误的单一原因。任何帮助表示赞赏:)

编辑:

我正在查看我的文件,在 /etc/ld.so.conf.d 中有一个 panda3d.conf 文件,其中一行:/usr/local/lib/x86_64-linux-gnu/panda3d.这有什么关系吗?

编辑#2:

不幸的是,我使用上面编辑中的路径作为库路径并得到了相同的结果。

最佳答案

I can't think of a single reason why I would get this error.

原因很简单:动态加载器没有被告知在 /usr/lib/panda3d 中查找共享库,因此也没有。

你可以运行你的程序:

LD_DEBUG=files,libs ./Test

并观察加载程序正在搜索哪些目录。

panda3d.conf ... with one line: /usr/local/lib/x86_64-linux-gnu/panda3d

那是错误的目录(或者至少不是你的库所在的目录)。

解决此问题的一种方法是将上述路径更正为 /usr/lib/panda3d 并运行 sudo ldconfig

另一种方法是将 -Wl,-rpath=/usr/lib/panda3d 添加到您的链接行。

关于C++ 可执行文件在运行时找不到库,即使它位于/usr/lib(在 Linux 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58153463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com