C++ 如何动态确定libudev版本

C++ 如何动态确定libudev版本,c++,linux,C++,Linux,我面临着将驱动程序移植到不同linux发行版的困难,因为它们的libudev版本不同 许多linux发行版都有不同的libudev版本,而libudev以在不更改其“soname”的情况下破坏其接口而闻名 因此,我们已经为udev版本编写了一个包装器,该包装器库使用“pkg config”向导使用udev版本。但现在,当我在不同的发行版(如Kali Linux)中运行驱动程序时,我知道在一些Linux发行版(如“Kali Linux”)中不存在“pkg config”实用程序 现在,我的驱动程序

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

许多linux发行版都有不同的libudev版本,而libudev以在不更改其“soname”的情况下破坏其接口而闻名

因此,我们已经为udev版本编写了一个包装器,该包装器库使用“pkg config”向导使用udev版本。但现在,当我在不同的发行版(如Kali Linux)中运行驱动程序时,我知道在一些Linux发行版(如“Kali Linux”)中不存在“pkg config”实用程序

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

这个问题还有其他解决办法吗? 通过搜索libudev库中声明的函数来猜测libudev版本可以吗?这是我目前唯一的想法


提前感谢。

感谢libudev在实时发行版上提供了一个pkg配置。 但它的名字已经改变了。现在您必须调用

pkg-config --modversion udev
最新版本的raspbian、kali和Ubunu发行版似乎基于debian,而不是“pkg config--modversion libudev”

更新: 我喜欢另一个没有pkg配置的发行版,在这种情况下,有一个叫做udevadm的工具,可以用来读取它的libudev版本

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

我认为你的前提是错误的。pkg-config肯定存在于Kali-linux中。也许你没有安装它。是的,我没有安装,我的意思是我正在使用实时版本AMD64。然后你应该使用kali中的软件包管理器安装pkg配置实用程序。我已经尝试过了。在apt获得更新后,我可以安装'pkg config',但由于缺少*.pc文件,新安装的pkg config根本没有返回正确的版本。然后,您应该为libudev安装-dev包,以便获得.pc文件