2016-10-03 84 views
0

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

许多linux发行版都有不同的libudev版本,而libudev以不改变它的'soname'而破坏它们的接口而闻名。

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

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

此问题的任何替代方案? 通过尝试搜索该库中声明的函数来猜测libudev版本是否简单?这是我目前唯一的方式。

在此先感谢。

+0

我认为你的前提是错误的。 pkg-config肯定存在于Kali linux中。也许你没有安装它。 – nos

+0

是的,我没有安装,我的意思是我使用的实际版本amd64 –

+0

然后,你应该使用软件包管理器在卡利安装pkg-config工具。 – nos

回答

0

对于libudev pkg-config存在于实时分发中的事实。 但它的名字已被更改。现在你必须调用。

pkg-config --modversion udev 

,而不是“pkg配置--modversion libudev”,这是raspbian的最新版本为真,卡莉和Ubunu发行版它们似乎是基于Debian。

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

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