我使用cmake在Ubuntu 12.04上安裝了opencv 2.4.3。在安裝時,.so文件放在/ usr/local/lib目錄中。當我使用下面的行終端使用.so文件的默認位置(即在/ usr/local/lib目錄)編譯我的代碼,然後它工作正常使用共享目標文件
g++ fileName.cpp -lopencv_core -lopencv_highgui -lopencv_imgproc
我試圖與共享對象文件進行試驗。我從/ usr/local/bin複製了所需的共享對象文件,並將它們放在一個新的文件夾位置/ home/nishant/Desktop/lib中。我複製以下文件和它們各自的.so.2.4和.so.2.4.3文件:
1)libopencv_core.so
2)libopencv_highgui.so
3)libopencv_imgproc.so
然後,我改變有分別命名爲libcore.so,libhighgui.so和libimgproc.so。我改變了他們的名字,以便舊的.so文件不應該從/ usr/local/lib中使用。現在,當我嘗試使用新的文件夾位置的共享對象文件編譯我的代碼,然後我得到以下錯誤:
終端命令:
g++ filename.cpp -L/home/nishant/Desktop/lib -lcore -lhighgui -limgproc
錯誤:
/usr/bin/ld: cannot find -lcore
/usr/bin/ld: cannot find -lhighgui
/usr/bin/ld: cannot find -limgproc
collect2: ld returned 1 exit status
它有趣的是請注意下列作品:
g++ filename.cpp -L/home/nishant/Desktop/lib -lopencv_core -lopencv_highgui -lopencv_imgproc
原因:正在使用/ usr/local/lib中的.so文件。
我的問題:如何使用新文件夾位置的.so文件來使我的代碼正常工作。
您確定/home/nishant/Desktop/lib/libcore.so是否是實際的庫文件,或者如果不是,符號鏈接指向正確的路徑?如果您只是重命名符號鏈接,則不會更改其目標,而必須重新創建指向重命名目標的鏈接。使用'ls -l'來列出符號鏈接目標。 – isedev