Building SFML on Fedora 24 linking error: error while loading shared libraries: libsfml-graphics.so.2.4: cannot open shared object file
Building SFML on Fedora 24 linking error: error while loading shared libraries: libsfml-graphics.so.2.4: cannot open shared object file
几天来,我一直在尝试让 SFML 在 Fedora 24 上运行,但我似乎无法让它运行。程序编译并且 link 很好,但是当我尝试 运行 编译的程序时,我得到这个错误:
./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 的情况下对文件制作 link 但它仍然不起作用。
我自己使用 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 包。
“-d”文件是库的调试版本(如果我没有记错 SFML 的命名约定的话)。您似乎缺少非调试版本。
几天来,我一直在尝试让 SFML 在 Fedora 24 上运行,但我似乎无法让它运行。程序编译并且 link 很好,但是当我尝试 运行 编译的程序时,我得到这个错误:
./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 的情况下对文件制作 link 但它仍然不起作用。
我自己使用 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 包。
“-d”文件是库的调试版本(如果我没有记错 SFML 的命名约定的话)。您似乎缺少非调试版本。