#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