【问题标题】:Building SFML on Fedora 24 linking error: error while loading shared libraries: libsfml-graphics.so.2.4: cannot open shared object file在 Fedora 24 上构建 SFML 链接错误:加载共享库时出错:libsfml-graphics.so.2.4:无法打开共享对象文件
【发布时间】: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


【解决方案1】:

“-d”文件是库的调试版本(如果我没记错 SFML 的命名约定的话)。您似乎缺少非调试版本。

【讨论】:

  • 这似乎奏效了。谢谢!但现在我有一个新问题。它给了我一个错误说: ./sfml-app: symbol lookup error: /lib/libsfml-graphics.so.2.4: undefined symbol: __cpu_model
  • @JesperJuhl 谢谢,这个补丁在 Fedora 25 和 gcc 6.3.1 上为我工作。
猜你喜欢
  • 2015-08-18
  • 1970-01-01
  • 2016-05-11
  • 2018-12-17
  • 2021-05-01
  • 1970-01-01
  • 2013-06-11
  • 2019-05-31
  • 2019-10-02
相关资源
最近更新 更多