Исправить неработающие ссылки в общей библиотеке g ++ - PullRequest
3 голосов
/ 07 августа 2011

У меня есть исполняемый файл, который ссылается на OpenCV 2.2. Тем не менее, я удалил OpenCV 2.2 и у меня установлен OpenCV 2.3.

Вопрос в том, есть ли способ связать этот исполняемый файл с новой общей библиотекой без перекомпиляции всего исходного кода? Как я могу исправить эти неработающие ссылки?

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)

...

спасибо, ребята,

Samuel

1 Ответ

4 голосов
/ 08 августа 2011

Если OpenCV версии 2.3 двоично совместим с версией 2.2, т. Е. Если ABI не претерпел критических изменений, вы можете обойти проблему с помощью символических ссылок :

# 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
.
.
.
...