【发布时间】:2016-12-29 09:58:17
【问题描述】:
我几天来一直试图让 SFML 在 Fedora 24 上工作,但我似乎无法让它工作。该程序可以正常编译和链接,但是当我尝试运行已编译的程序时出现此错误:
./sfml-app: error while loading shared libraries: libsfml-graphics.so.2.4: cannot open shared object file: No such file or directory
我知道这些文件在那里,因为它们都位于 /usr/lib 目录中:
ls /usr/lib | grep sfml
libsfml-audio-d.so
libsfml-audio-d.so.2.4
libsfml-audio-d.so.2.4.0
libsfml-graphics-d.so
libsfml-graphics-d.so.2.4
libsfml-graphics-d.so.2.4.0
libsfml-network-d.so
libsfml-network-d.so.2.4
libsfml-network-d.so.2.4.0
libsfml-system-d.so
libsfml-system-d.so.2.4
libsfml-system-d.so.2.4.0
libsfml-window-d.so
libsfml-window-d.so.2.4
libsfml-window-d.so.2.4.0
我认为问题在于它正在寻找 libsfml-graphics.so.2.4,但该文件实际上名为 libsfml-graphics-d.so.2.4。 -d 出于某种原因在实际文件名中。我尝试在没有 -d 的情况下创建指向文件的链接,但它仍然不起作用。
我自己使用 CMake 和 make 构建了 SFML,然后使用 make install 安装它。
当我运行 ldconfig -p | grep sfml 我明白了:
libsfml-window-d.so.2.4 (libc6,x86-64) => /lib/libsfml-window-d.so.2.4
libsfml-window-d.so (libc6,x86-64) => /lib/libsfml-window-d.so
libsfml-system-d.so.2.4 (libc6,x86-64) => /lib/libsfml-system-d.so.2.4
libsfml-system-d.so (libc6,x86-64) => /lib/libsfml-system-d.so
libsfml-network-d.so.2.4 (libc6,x86-64) => /lib/libsfml-network-d.so.2.4
libsfml-network-d.so (libc6,x86-64) => /lib/libsfml-network-d.so
libsfml-graphics-d.so.2.4 (libc6,x86-64) => /lib/libsfml-graphics-d.so.2.4
libsfml-graphics-d.so (libc6,x86-64) => /lib/libsfml-graphics-d.so
libsfml-audio-d.so.2.4 (libc6,x86-64) => /lib/libsfml-audio-d.so.2.4
libsfml-audio-d.so (libc6,x86-64) => /lib/libsfml-audio-d.so
我们将不胜感激任何有关完成这项工作的帮助。 :)
编辑:
我下载了官方的fedora SFML包。我想我第一次安装它时忘记安装 SFML-devel 包。
【问题讨论】:
-
发行版自带的正式版不能用是什么原因?
-
我最初使用的是那个,但它给了我这个错误:./sfml-app: symbol lookup error: /lib/libsfml-graphics.so.2.4: undefined symbol: __cpu_model 这是什么现在正在发生,我在下面尝试了 jesper 的解决方案
-
你检查过你的 /usr/lib64 文件夹了吗?是 64 位安装吗?
标签: c++ linux shared-libraries sfml dynamic-linking