c - ld 无法在 Raspbian 下找到 librrd

标签 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

我还链接了 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 文件夹中创建一个带有库号的软链接(soft link)到安装的库的实际版本。喜欢

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

总的来说

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

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

关于c - ld 无法在 Raspbian 下找到 librrd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26521972/

相关文章:

c++ - 在 C 中是否有一组标准的库用于动态字符串、列表和字典?

c - 使用另一个过程而不是直接使用 main()

c - 如何在内核模式驱动程序中使用 Winsock 内核 (WSK) 发送原始套接字数据包?

gcc - Ubuntu 升级后链接到库的问题

c - 在 GCC 4.6.1 (Ubuntu 11.10) 中链接数学库

linux - 区域设置更改后无法登录 Raspberry Pi Linux

python - 连接到运行 Python 脚本的 Raspberry Pi 的磁性门传感器报告误报

Node.js - 用户目录中不存在 package.json

c++ - 与静态 c 运行时链接时内存分配/解除分配的问题

C++ 如何使用具有继承性的模板对象的模板集合?