suse11sp4 undefined reference to `udev_device_unref

228 阅读1分钟

前提:

已经安装了 libudev-devel库。

并且编译选项有 -ludev

原因(第二种可能性更大,没有时间去重现分析):

1. 库的版本过低。

2. 编译的可执行程序使用了一个静态库,而这个静态库中使用了udev, 因此可能需要重新去编译一下这个静态库。

附常用操作:

判断是否安装通过查询

rpm -qa | grep libudev

whereis libudev

libudev: /usr/lib64/libudev.so /usr/include/libudev.h

附查询某个文件所属库

rpm -qf /usr/lib64/libudev.so

上面命令根据实践,即使将链接指向的文件版本更换了,查询结果也一样。说明库的版本是记录在一个单独的文件中,而非从so或.h文件中解析而来。