Linux SFML - 无法打开共享对象文件

时间:2017-01-06 23:32:21

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

使用Linux Mint 18 Cinnamon 64-Bit

我在尝试让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

所以有人可以向我解释为什么无法找到目标文件?感谢

1 个答案:

答案 0 :(得分:0)

您遇到的问题是,您告诉链接器在哪里可以找到库文件/信息,但在运行程序时,您的系统不知道在哪里可以找到属于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