如何动态确定libudev版本

时间:2016-10-03 06:45:22

标签: c++ linux

我面临着将驱动程序移植到不同Linux发行版中的困难,因为它们的libudev版本不同。

许多Linux发行版都有不同的libudev版本,并且libudev以破坏其界面而不知道它的'soname'而闻名。

所以我们为udev版本编写了一个包装器,包装器库使用'pkg-config'向导使用udev版本。但现在当我在Kali Linux等不同发行版中运行我的驱动程序时,我发现某些Linux发行版中不存在“pkg-config”实用程序,例如“Kali linux”。

现在我的驱动程序无法运行,因为它依赖于'pkg-config'实用程序,这在“Kali Linux”中找不到。如果不使用'pkg-config'实用程序,我无法确定libudev版本。即使我强制我的客户端安装'pkg-config'实用程序,某些linux系统也没有* .pc文件,所以它也会失败。

此问题的替代方案? 通过尝试搜索该库中声明的函数来猜测libudev版本是不是很常见?这是我目前唯一想到的方式。

提前致谢。

1 个答案:

答案 0 :(得分:0)

因为libudev pkg-config存在于实时发行版中。 但它的名字已经改变了。现在你必须调用。

pkg-config --modversion udev

而不是' pkg-config --modversion libudev' ,最新版本的raspbian,kali和Ubunu发行版似乎是以debian为基础的。

更新: 我喜欢另一个没有pkg-config的发行版,在这种情况下,有一个名为udevadm的工具,它可以用来读取它的libudev版本。

which udevadm
if [ $? -eq 0 ]; then
    UDEV_VERSION=`udevadm --version`
fi