2016-10-03 72 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