openwrt編譯時鏈結庫版本不對問題分析

2021-10-10 15:51:55 字數 458 閱讀 1980

在乙個工程中使用鏈結了自己編譯的庫,但編譯時一直出現下面的問題,原因可能是你當前系統中opencv的版本已經不是4.1了,但你當前工程中有so依賴了4.1版本的opencv,所以他找不到4.1版本opencv庫檔案。

package translator is missing dependencies for the following libraries:

libopencv_core.so.4.1

這時可以對工程中使用的庫逐個查詢,看是那乙個庫在編譯時指定了版本,然後重新編譯這個庫:

readelf -a libwordsegmenter.so | grep opencv
比如在檢視libwordsegmenter.so時發現它依賴了libopencv_core.so.4.1,重新編譯libwordsegmenter.so讓他依賴的庫版本和系統當前的一致

linux 編譯靜態鏈結庫和動態鏈結庫

我們通常把一些公用函式製作成函式庫,供其它程式使用。函式庫分為靜態庫和動態庫兩種。靜態庫在程式編譯時會被連線到目標 中,程式執行時將不再需要該靜態庫。動態庫在程式編譯時並不會被連線到目標 中,而是在程式執行是才被載入,因此在程式執行時還需要動態庫存在。本文主要通過舉例來說明在linux中如何建立靜態...

GCC 編譯使用動態鏈結庫和靜態鏈結庫

1 庫的分類 根據鏈結時期的不同,庫又有靜態庫和動態庫之分。靜態庫是在鏈結階段被鏈結的 好像是廢話,但事實就是這樣 所以生成的可執行檔案就不受庫的影響了,即使庫被刪除了,程式依然可以成功執行。有別於靜態庫,動態庫的鏈結是在程式執行的時候被鏈結的。所以,即使程式編譯完,庫仍須保留在系統上,以供程式執行...

GCC 編譯使用動態鏈結庫和靜態鏈結庫

1 庫的分類 根據鏈結時期的不同,庫又有靜態庫和動態庫之分。靜態庫是在鏈結階段被鏈結的 好像是廢話,但事實就是這樣 所以生成的可執行檔案就不受庫的影響了,即使庫被刪除了,程式依然可以成功執行。有別於靜態庫,動態庫的鏈結是在程式執行的時候被鏈結的。所以,即使程式編譯完,庫仍須保留在系統上,以供程式執行...