我面临将我的驱动程序移植到不同的Linux发行版中的困难,因为它们的libudev版本是不同的。
许多Linux发行版确实具有不同的libudev版本,并且libudev以中断其接口(interface)而不改变其“soname”而闻名。
因此,我们为udev版本编写了一个包装器,并且该包装器库确实通过“pkg-config”向导使用了udev版本。但是现在当我在不同的发行版(如Kali Linux)中运行驱动程序时,我知道在某些Linux发行版(如“Kali linux”)中不存在“pkg-config”实用程序。
现在,我的驱动程序无法运行,因为它依赖于'Kali Linux'中找不到的'pkg-config'实用程序。如果不使用'pkg-config'实用程序,就无法确定libudev版本。即使我强制我的客户端安装'pkg-config'实用程序,某些linux系统也没有* .pc文件,因此它也会失败。
这个问题有其他选择吗?
通过尝试搜索该库中声明的函数可以猜测libudev版本吗?这是我目前脑海中唯一的方法。
提前致谢。
最佳答案
对于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