我从 git(调试、发布、静态和动态)下载并编译了 SFML2,我使用以下方法从他们的教程中成功编译了一些示例代码:
g++ main.cpp -lsfml-graphics -lsfml-window -lsfml-system
当我尝试运行二进制文件时出现问题,它找不到任何共享对象(libsfml-graphics.so.2、libsfml-window.so.2 等)
我检查过它们存在于/usr/local/lib 中。
我错过了什么吗?
如果相关,使用 Fedora 17 x64 和 g++ 4.7.2
最佳答案
/usr/local/lib
通常不被动态链接器搜索。将其添加到 LD_LIBRARY_PATH
.
或者,将动态链接器配置为始终搜索 /usr/local/lib
也许/usr/local/lib64
.这通常是通过将路径添加到 /etc/ld.so.conf
来完成的。文件,并运行 ldconfig
.
有时还会出现 32/64 位问题,即尝试运行 32 位可执行文件但只存在 64 位库,反之亦然。运行 file <somtething>.so
和 file <your-executable>
以确定它们的架构。通常,32 位库转到 <whatever>/lib
和 64 位的到 <whatever>/lib64
, 但有时他们最终会出现在错误的地方。
关于c++ - SFML2 应用程序找不到共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13518689/