c - Eclipse CDT/CSFML,加载共享库时出错

标签 c linker shared-libraries eclipse-cdt sfml

我使用 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++ 代码。

对于问题出在哪里有什么想法吗?谢谢。

最佳答案

  1. 您的 rpath 选项中有拼写错误,

    -rpath/home/u123/Prog/SFML-2.2/lib 应该是 -rpath/home/u123/Prog/CSFML-2.2/lib ?

  2. 此外,尝试将 -lcsfml-audio 添加到链接器。

关于c - Eclipse CDT/CSFML,加载共享库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36770431/

相关文章:

c - 优化以下代码块

无法用函数指针填充 double 组

c - 在 Swift 模块中使用 C 库的链接器架构错误

c++ - 加载共享库时出错

c++ - 如何连接字节数组并转换为十进制?

c++ - 使用 SDL 库时出现链接器错误 : _main already defined in main. obj

c++ - OSX 上 Boost 和 C++ 的链接器错误

dynamic - 如何仅将动态符号保留在共享对象中以进行动态链接?

c++ - 在不重新编译主程序的情况下分析共享对象

linux - gcc: 找不到/usr/local/lib 中的链接库,但是/etc/ld/so.conf.d/libc.conf 列出了它?