2011-08-07 52 views
3

我有一個鏈接到opencv 2.2的可執行文件。但是,我已經刪除了opencv 2.2,並且已經安裝了opencv 2.3。修復共享庫g ++上的鏈接損壞

問題是,有沒有辦法將這個可執行文件鏈接到新的共享庫,而無需重新編譯整個源代碼?我該如何解決那些斷開的鏈接?

running ldd: 

    linux-vdso.so.1 => (0x00007fff17fff000) 
    libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007fd6f0e0d000) 
    libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007fd6f0bf2000) 
    libXmu.so.6 => /usr/lib/libXmu.so.6 (0x00007fd6f09d8000) 
    libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007fd6f07c8000) 
    libGLU.so.1 => /usr/lib/libGLU.so.1 (0x00007fd6f0559000) 
    libGL.so.1 => /usr/lib/fglrx/libGL.so.1 (0x00007fd6f0353000) 
    libopencv_core.so.2.2 => not found 
    libopencv_imgproc.so.2.2 => not found 
    libopencv_highgui.so.2.2 => not found 
    libopencv_ml.so.2.2 => not found 
    libopencv_video.so.2.2 => not found 
    libopencv_features2d.so.2.2 => not found 
    libopencv_calib3d.so.2.2 => not found 
    libopencv_objdetect.so.2.2 => not found 
    libopencv_contrib.so.2.2 => not found 
    libopencv_legacy.so.2.2 => not found 
    libopencv_flann.so.2.2 => not found 
    libglut.so.3 => /usr/lib/libglut.so.3 (0x00007fd6f0109000) 

...

謝謝你們,

塞繆爾

+0

'2.3'是否與'2.2'兼容?如果ABI沒有改變,我想你可以用符號鏈接來解決這個問題。 –

+0

我試圖爲它創建符號鏈接,但它不起作用 –

+0

'ldd'仍然說'找不到'嗎?您的程序是否崩潰或無法加載? –

回答

4

如果OpenCV的2.3版二進制兼容的 2.2版本,即如果ABI沒有發生重大更改,你可以解決此問題symbolic links

# ln -s /usr/lib/libopencv_core.so.2.3 /usr/lib/libopencv_core.so.2.2 
# ln -s /usr/lib/libopencv_imgproc.so.2.3 /usr/lib/libopencv_imgproc.so.2.2 
. 
. 
.