Eclipse CDT/CSFML,加载共享库时出错
Eclipse CDT/CSFML, error while loading shared libraries
我使用 Kubuntu 14.04、Eclipse CDT 并且喜欢包含生成此错误的 CSFML:
/home/u123/Prog/Test/Debug/Test: error while loading shared libraries: libcsfml-audio.so.2.2: cannot open shared object file: No such file or directory
我的编译器设置:
-DCSFML_STATIC -I/home/u123/Prog/CSFML-2.2/include -O0 -g3 -Wall -c -fmessage-length=0
我的链接器设置
-L/home/u123/Prog/CSFML-2.2/lib -L/usr/local/lib -Xlinker -rpath /home/u123/Prog/SFML-2.2/lib
ldconfig -v 的一些输出
/home/u123/Prog/CSFML-2.2/lib:
libcsfml-system.so.2.2 -> libcsfml-system.so.2.2.0
libcsfml-graphics.so.2.2 -> libcsfml-graphics.so.2.2.0
libcsfml-window.so.2.2 -> libcsfml-window.so.2.2.0
libcsfml-audio.so.2.2 -> libcsfml-audio.so.2.2.0
目录:
u123@PC-Ubuntu:~$ ls /home/u123/Prog/CSFML-2.2/lib
libcsfml-audio.so libcsfml-graphics.so libcsfml-network.so libcsfml-system.so libcsfml-window.so
libcsfml-audio.so.2.2 libcsfml-graphics.so.2.2 libcsfml-network.so.2.2 libcsfml-system.so.2.2 libcsfml-window.so.2.2
libcsfml-audio.so.2.2.0 libcsfml-graphics.so.2.2.0 libcsfml-network.so.2.2.0 libcsfml-system.so.2.2.0 libcsfml-window.so.2.2.0
u123@PC-Ubuntu:~$ ls /home/u123/Prog/SFML-2.2/lib
libsfml-audio.so libsfml-graphics.so.2.2.0 libsfml-system.so libsfml-window.so.2.2.0
libsfml-audio.so.2.2.0 libsfml-network.so libsfml-system.so.2.2.0 pkgconfig
libsfml-graphics.so libsfml-network.so.2.2.0 libsfml-window.so
ldd:
u123@PC-Ubuntu:~$ ldd /home/u123/Prog/Test/Debug/Test
linux-vdso.so.1 => (0x00007ffec7bfe000)
libcsfml-graphics.so.2.2 => /home/u123/Prog/CSFML-2.2/lib/libcsfml-graphics.so.2.2 (0x00007f226358b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f22631c6000)
libsfml-graphics.so.2.2.0 => not found
libsfml-window.so.2.2.0 => not found
libsfml-system.so.2.2.0 => not found
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f2262ec0000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f2262caa000)
/lib64/ld-linux-x86-64.so.2 (0x000055fd8c8fb000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f22629a3000)
在我看来(但我对 SFML 不是很有经验)CSFML 是 c 中的代码,就像一个门面,它引用了 SFML c++ 代码。
对问题所在有任何想法吗?谢谢。
您的 rpath
选项有错字,
-rpath /home/u123/Prog/SFML-2.2/lib
应该是
-rpath /home/u123/Prog/CSFML-2.2/lib
?
此外,尝试将 -lcsfml-audio
添加到链接器。
设置环境变量LD_LIBRARY_PATH解决了问题。
前往
Project->Properties->C/C++ Build->Enviroment, and add a new variable named LD_LIBRARY_PATH, value = /path/to/lib
在这种情况下 /home/u123/Progs/SFML-2.2/lib
我使用 Kubuntu 14.04、Eclipse CDT 并且喜欢包含生成此错误的 CSFML:
/home/u123/Prog/Test/Debug/Test: error while loading shared libraries: libcsfml-audio.so.2.2: cannot open shared object file: No such file or directory
我的编译器设置:
-DCSFML_STATIC -I/home/u123/Prog/CSFML-2.2/include -O0 -g3 -Wall -c -fmessage-length=0
我的链接器设置
-L/home/u123/Prog/CSFML-2.2/lib -L/usr/local/lib -Xlinker -rpath /home/u123/Prog/SFML-2.2/lib
ldconfig -v 的一些输出
/home/u123/Prog/CSFML-2.2/lib:
libcsfml-system.so.2.2 -> libcsfml-system.so.2.2.0
libcsfml-graphics.so.2.2 -> libcsfml-graphics.so.2.2.0
libcsfml-window.so.2.2 -> libcsfml-window.so.2.2.0
libcsfml-audio.so.2.2 -> libcsfml-audio.so.2.2.0
目录:
u123@PC-Ubuntu:~$ ls /home/u123/Prog/CSFML-2.2/lib
libcsfml-audio.so libcsfml-graphics.so libcsfml-network.so libcsfml-system.so libcsfml-window.so
libcsfml-audio.so.2.2 libcsfml-graphics.so.2.2 libcsfml-network.so.2.2 libcsfml-system.so.2.2 libcsfml-window.so.2.2
libcsfml-audio.so.2.2.0 libcsfml-graphics.so.2.2.0 libcsfml-network.so.2.2.0 libcsfml-system.so.2.2.0 libcsfml-window.so.2.2.0
u123@PC-Ubuntu:~$ ls /home/u123/Prog/SFML-2.2/lib
libsfml-audio.so libsfml-graphics.so.2.2.0 libsfml-system.so libsfml-window.so.2.2.0
libsfml-audio.so.2.2.0 libsfml-network.so libsfml-system.so.2.2.0 pkgconfig
libsfml-graphics.so libsfml-network.so.2.2.0 libsfml-window.so
ldd:
u123@PC-Ubuntu:~$ ldd /home/u123/Prog/Test/Debug/Test
linux-vdso.so.1 => (0x00007ffec7bfe000)
libcsfml-graphics.so.2.2 => /home/u123/Prog/CSFML-2.2/lib/libcsfml-graphics.so.2.2 (0x00007f226358b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f22631c6000)
libsfml-graphics.so.2.2.0 => not found
libsfml-window.so.2.2.0 => not found
libsfml-system.so.2.2.0 => not found
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f2262ec0000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f2262caa000)
/lib64/ld-linux-x86-64.so.2 (0x000055fd8c8fb000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f22629a3000)
在我看来(但我对 SFML 不是很有经验)CSFML 是 c 中的代码,就像一个门面,它引用了 SFML c++ 代码。
对问题所在有任何想法吗?谢谢。
您的
rpath
选项有错字,-rpath /home/u123/Prog/SFML-2.2/lib
应该是-rpath /home/u123/Prog/CSFML-2.2/lib
?此外,尝试将
-lcsfml-audio
添加到链接器。
设置环境变量LD_LIBRARY_PATH解决了问题。 前往
Project->Properties->C/C++ Build->Enviroment, and add a new variable named LD_LIBRARY_PATH, value = /path/to/lib
在这种情况下 /home/u123/Progs/SFML-2.2/lib