2011-08-07 51 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 
. 
. 
.