【问题标题】:How to determine the libudev version dynamically如何动态确定libudev版本
【发布时间】:2017-08-01 12:31:58
【问题描述】:

我在将我的驱动程序移植到不同的 linux 发行版时遇到了困难,因为它们的 libudev 版本不同。

许多 linux 发行版确实有不同的 libudev 版本,并且 libudev 以在不更改其“soname”的情况下破坏其界面而闻名。

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

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

这个问题的任何替代方案? 是否可以通过尝试搜索该库中声明的函数来猜测 libudev 版本?这是我目前想到的唯一方法。

提前致谢。

【问题讨论】:

  • 我认为你的前提是错误的。 pkg-config 当然存在于 Kali linux 中。也许你没有安装它。
  • 是的,我没有安装,我的意思是我使用的是实时版本 amd64
  • 然后你应该使用 kali 中的包管理器安装 pkg-config 实用程序。
  • 我已经试过了。在 apt-get update 之后,我可以安装“pkg-config”,但是由于缺少 *.pc 文件,新安装的 pkg-config 根本不会返回正确的版本。
  • 那么你应该为libudev安装-dev包,这样你就得到了.pc文件

标签: c++ linux


【解决方案1】:

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

pkg-config --modversion udev

而不是 'pkg-config --modversion libudev' ,这适用于似乎基于 debian 的最新版本的 raspbian、kali 和 Ubunu 发行版。

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

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

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多