Openwrt編譯時,經常會遇到如下問題:
Openwrt Package xxx is missing dependencies for the following libraries:
libxxx.so.*
解決方法如下:
- 第一步:檢查
package/xxx/Makefile
中的DEPENDS
是否加入了對應的依賴庫,若沒有則加上 - 第二步:若加入了相應的依賴,還出現上述問題,則可能是加入的庫名稱不正確導致,需要自行確認是否填錯依賴的名稱
舉一個我遇到過的案例
我在編譯DAQ時,出現如下錯誤:
第一步,我修改了 Makefile,加入了相應的依賴,如下圖所示:
# vi package/feeds/packages/libdaq/Makefile
一開始根據缺失的庫文件名稱,想當然的就加入 +libnfnetlink +libnetfilter_queue
但是又出現如下錯誤:
由上圖可以看出,比之前的錯誤少報了一個庫,說明該方法是可行的。後面才發現原來是庫名稱錯了,需要填入我們在 meke menuconfig
選中的那個名稱,如下圖:
在填入+libnfnetlink +libnetfilter-queue
後,重新編譯 DAQ 就可以通過了。只是一個符號的差距,卻讓我糾結了很久,所以細心是非常重要的。