【问题标题】:Linux SFML - Cannot Open Shared Object FileLinux SFML - 无法打开共享对象文件
【发布时间】:2017-05-21 19:52:19
【问题描述】:

使用 Linux Mint 18 Cinnamon 64 位

我在尝试使 SFML 工作时遇到问题。我正在尝试使用 g++ 从命令行编译。

我的档案是/home/joe/Desktop/SFML/test/main.cpp

我的 SFML 文件夹位于 /usr/lib/SFML-2.4.1

如果我运行g++ -c main.cpp -I/usr/lib/SFML-2.4.1/include,它编译得很好。 然后我运行g++ main.o -o sfml-app -L/usr/lib/SFML-2.4.1/lib -lsfml-graphics -lsfml-system -lsfml-window -lsfml-audio 这之前有问题,但是在使用 -L 命令之后它现在可以正常工作了。

但是,当我运行 ./sfml-app 时,我收到错误 ./sfml-app: error while loading shared libraries: libsfml-graphics.so.2.4: cannot open shared object file: No such file or directory

现在在/usr/lib/SFML-2.4.1/lib 目录中,libsfml-graphics.so.2.4 是一个符号链接,具有以下链(该目录中的所有文件。

libsfml-graphics.so -> libsfml-graphics.so.2.4 -> libsfml-graphics.so.2.4.1

那么任何人都可以向我解释为什么找不到目标文件吗?谢谢

【问题讨论】:

  • 您可以使用-rpath/usr/lib/SFML-2.4.1/lib 告诉ld 包含库的完整路径,或者在/etc/ld.so.conf.d 中创建一个指向库位置的配置文件,然后运行ldconfig

标签: c++ linux sfml sfml.net jsfml


【解决方案1】:

您遇到的问题是您告诉链接器在哪里可以找到库文件/信息,但是在运行程序时,您的系统不知道在哪里可以找到属于 SFML 的共享库。

最快的解决方法是创建一个小的 shell 脚本来运行设置环境变量 LD_LIBRARY_PATH 的程序。

这样的东西应该可以工作(未经测试):

#!/usr/bin/bash
LD_LIBRARY_PATH=/usr/lib/SFML-2.4.1/bin ./sfml-app

作为替代方案,我建议您compile and install SFML from sources。没那么复杂。最困难的部分是确定所有依赖项并首先安装它们(最好使用包管理器)。

也可以使用apt-get 安装 SFML,但我不能 100% 确定他们的版本是最新的:sudo apt-get install libsfml-dev

【讨论】:

    猜你喜欢
    • 2023-02-07
    • 2011-12-23
    • 2013-04-21
    • 2013-05-05
    • 2019-04-30
    • 1970-01-01
    • 2012-05-24
    • 2014-02-10
    • 2021-01-06
    相关资源
    最近更新 更多