Как динамически определять версию libudev

#c #linux

#c #linux

Вопрос:

Я сталкиваюсь с трудностями при переносе моих драйверов в разные дистрибутивы Linux, потому что их версия libudev отличается.

Многие дистрибутивы Linux имеют разные версии libudev, и libudev известен тем, что нарушает их интерфейс, даже не меняя его ‘soname’.

Итак, мы должны написать оболочку для версии udev, и эта библиотека-оболочка использует версию udev с помощью мастера ‘pkg-config’. Но теперь, когда я запускаю свои драйверы в разных дистрибутивах, таких как Kali Linux, я узнаю, что утилита ‘pkg-config’ не существует в некоторых дистрибутивах Linux, таких как «Kali linux».

Теперь мои драйверы не работают, потому что это зависит от утилиты ‘pkg-config’, которую невозможно найти в ‘Kali Linux’. И я никак не мог определить версию libudev без использования утилиты ‘pkg-config’. Даже если я заставлю своего клиента установить утилиту ‘pkg-config’, в некоторых системах Linux нет файла * .pc, поэтому он также терпит неудачу.

Какие-либо альтернативы этой проблеме? Можно ли угадать версию libudev, попытавшись выполнить поиск по функциям, объявленным в этой библиотеке? Это единственный способ, который в настоящее время у меня на уме.

Заранее спасибо.

Комментарии:

1. Я думаю, что ваши предпосылки неверны. pkg-config, безусловно, существует в Kali linux. Возможно, у вас она не была установлена.

2. да, я не устанавливал, я имею в виду, что я использую текущую версию amd64

3. Затем вам следует установить утилиту pkg-config с помощью менеджера пакетов в kali.

4. Я уже пробовал это. после apt-get update я могу установить ‘pkg-config’, но тот pkg-config, который недавно установлен, вообще не возвращает правильную версию из-за отсутствия файла * .pc.

5. Затем вы должны установить пакет -dev для libudev, чтобы получить файл .pc

Ответ №1:

За то, что 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