ld无法在Raspbian下找到librrd

时间:2014-10-23 05:45:38

标签: c linker raspberry-pi raspbian rrdtool

我尝试在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

我还链接了layoutPi库,它找到了没有问题:

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)。还有什么我想念的吗?

1 个答案:

答案 0 :(得分:2)

在/ usr / lib文件夹中创建一个软链接,其库编号为已安装库的实际版本。像

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

一般

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

此问题是因为链接器将尝试通过绝对名称标识库共享对象文件。如果ld无法找到,那么它会抛出这样的错误。