【问题标题】:ld unable to find librrd under Raspbianld 无法在 Raspbian 下找到 librrd
【发布时间】:2014-12-18 18:14:25
【问题描述】:

我尝试在 Raspbian(Raspberry Pi 的 Debian 变体)下的 C 程序中使用 rrdtools 库。链接器一直抱怨找不到 rrd 库:

tos@pi ~/work/reader $ gcc -o reader -lwiringPi -lrrd *.c                     
/usr/bin/ld: cannot find -lrrd                                                          
collect2: ld returned 1 exit status

图书馆似乎在它应该在的地方:

tos@pi ~/work/reader $ ll /usr/lib/librrd.*
lrwxrwxrwx 1 root root     15 Sep  4  2012 /usr/lib/librrd.so.4 -> librrd.so.4.2.0
-rw-r--r-- 1 root root 327224 Sep  4  2012 /usr/lib/librrd.so.4.2.0

我还链接了 WiringPi 库,它发现没有问题:

tos@pi ~/work/reader $ ll /usr/lib/libwiring*
lrwxrwxrwx 1 root root 36 Sep 25 14:50 /usr/lib/libwiringPiDev.so -> /usr/local/lib/libwiringPiDev.so.2.0
lrwxrwxrwx 1 root root 33 Sep 25 14:50 /usr/lib/libwiringPi.so -> /usr/local/lib/libwiringPi.so.2.0

ldconfig -v 显示 librrd,该库似乎适用于正确的架构(arm)。我还有什么遗漏的吗?

【问题讨论】:

  • 在/usr/lib文件夹“$ln -s librrd.so.4.2.0 /usr/lib/librrd.so”中创建软链接,然后尝试
  • @SantoshA 谢谢,这解决了问题。
  • 欢迎。 @Thomas Stets 更新了答案部分的答案以供将来参考

标签: c linker raspberry-pi raspbian rrdtool


【解决方案1】:

在 /usr/lib 文件夹中创建一个带有库号的软链接,指向安装的库的实际版本。喜欢

$ ln -s librrd.so.4.2.0 /usr/lib/librrd.so

一般

$ ln -s Library_name.version.so Library_name.so

这个问题是因为链接器会尝试通过绝对名称来识别库共享对象文件。如果 ld 找不到,就会抛出类似这样的错误。

【讨论】:

    猜你喜欢
    • 2017-05-20
    • 2011-10-16
    • 2020-02-19
    • 1970-01-01
    • 2021-05-07
    • 2016-09-25
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多