1. 程式人生 > >關於ubuntu中動態連結庫路徑的設定以及原始碼編譯python可用的opencv

關於ubuntu中動態連結庫路徑的設定以及原始碼編譯python可用的opencv

ubuntu中設定動態連結庫的路徑有兩種方式:

  1. .bashrc中新增export LD_LIBRARY_PATH=lib_path:$LD_LIBRARY_PATH(其中lib_path表示動態連結庫路徑),儲存.bashrc之後採用命令source .bashrc啟用;
  2. /etc/ld.so.conf.d新增檔案some_lib.conf,並在其中寫入lib_path,(some_lib可以用動態連結庫庫名錶示,如opencv可寫成opencv.conf),之後採用sudo ldconfig啟用。
    這兩種方式最後實現的效果是等價的,它們都可以用於解決檔案或動態連結庫找不到其依賴庫的情況。

舉個例子

我們想用原始碼編譯opencv,在我們安裝好依賴庫,並在make install成功後,opencv的相關動態連結庫被安裝至/usr/local/lib中。這個時候,我們不僅想用opencvc/c++介面,還想用它的python介面。
網上常規的一種方法是將原始碼編譯的opencv/build/lib/cv2.soopencv/modules/python/src2/cv.py兩個檔案拷貝至python2.7/dist-packagespython/site-packages
(二者的區別在於如果你的python是原始碼編譯的,則第三方庫會被放在site-packages中,如果你是採用sudo apt-get install python-dev

,第三方庫會被放在dist-packages中),
但是按照這種方法執行後,我發現自己的python2.7/dist-packages/cv2.so如果採用ldd查詢依賴庫的話,會出現

libopencv_core.so => not found

等相關opencv庫找不到的情況。
這時候,我們可以通過設定opencv的動態連結庫的方式來解決這個問題。但注意終端一定要重開一個,如果還是採用原始終端,終端可能未識別到更改。