Linux SFML - 无法打开共享对象文件
Linux SFML - Cannot Open Shared Object File
Using 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 命令后,它现在可以正常工作。
howerver 当我运行./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
那么谁能向我解释为什么找不到目标文件?谢谢
您遇到的问题是,您告诉链接器在哪里可以找到库文件/信息,但是在运行程序时,您的系统将不知道在哪里可以找到属于SFML的共享库。
最快的解决方法是创建一个小的 shell 脚本来运行您的程序,该脚本将环境变量设置为 LD_LIBRARY_PATH
。
这样的东西应该可以工作(未经测试):
#!/usr/bin/bash
LD_LIBRARY_PATH=/usr/lib/SFML-2.4.1/bin ./sfml-app
作为替代方案,我建议您从源代码编译和安装 SFML。没那么复杂。最困难的部分是确定所有依赖项并首先安装它们(最好使用包管理器)。
也可以使用 apt-get
安装 SFML,但我不能 100% 确定他们的版本是最新的:sudo apt-get install libsfml-dev
- 处理影响跨不同线程共享对象的定时回调的最佳方法是什么?
- 如何创建一个共享对象与另一个.所以在Cmake
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- 在 Android Studio 中使用 C++ 共享对象时出现问题
- 共享对象、符号、C/C++ 库链接和加载
- ./main:加载共享库时出错:libopencv_highgui.so.4.0:无法打开共享对象文件:没有这样的文件或
- 在 win32 上生成 R 包:无法加载共享对象 (.dll)
- 共享对象中的符号
- sf::Windows上的音乐:api-ms-win-crt-locale-l1-1-0.dll:无法打开共享对象文件
- C++ 为什么要级联共享对象链接
- 加载共享库时出错:libbsoncxx.so._noabi:无法打开共享对象文件:没有此类文件或目录
- 从单个.cpp构建共享对象
- 与 32 位共享对象的链接问题
- 卸载共享对象(.so 文件)在 C++ 中用 dlopen() 打开
- 运行程序时找不到共享对象库,但在编译过程中链接了它
- 错误:无法打开共享对象文件:没有此类文件或目录
- Qt 创建器:将库移动到 subdir 后无法打开共享对象文件
- 共享对象中的符号名称与文件中.cpp函数不同
- C++:在共享对象中调用抽象基类构造函数/未定义的符号
- Cython:共享对象中未定义的符号