關於ubuntu中動態連結庫路徑的設定以及原始碼編譯python可用的opencv
阿新 • • 發佈:2019-02-11
ubuntu中設定動態連結庫的路徑有兩種方式:
- 在
.bashrc
中新增export LD_LIBRARY_PATH=lib_path:$LD_LIBRARY_PATH
(其中lib_path
表示動態連結庫路徑),儲存.bashrc
之後採用命令source .bashrc
啟用; - 在
/etc/ld.so.conf.d
新增檔案some_lib.conf
,並在其中寫入lib_path
,(some_lib
可以用動態連結庫庫名錶示,如opencv
可寫成opencv.conf
),之後採用sudo ldconfig
啟用。
這兩種方式最後實現的效果是等價的,它們都可以用於解決檔案或動態連結庫找不到其依賴庫的情況。
舉個例子
我們想用原始碼編譯opencv
,在我們安裝好依賴庫,並在make install
成功後,opencv
的相關動態連結庫被安裝至/usr/local/lib
中。這個時候,我們不僅想用opencv
的c/c++
介面,還想用它的python
介面。
網上常規的一種方法是將原始碼編譯的opencv/build/lib/cv2.so
和opencv/modules/python/src2/cv.py
兩個檔案拷貝至python2.7/dist-packages
或python/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
的動態連結庫的方式來解決這個問題。但注意終端一定要重開一個,如果還是採用原始終端,終端可能未識別到更改。