Ошибка компиляции программы openCV & quot; libopencv_core.so.2.4: невозможно открыть общий объектный файл: нет такого файла или каталога & quot; в убунту 12.04

Я скомпилировал и установил openCV 2.4.2 в Ubuntu 12.04. Под /usr/local/include Я вижу каталоги /usr/local/opencv а также /usr/local/opencv2,

Вот код, который я написал:

#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc,char **argv)
{
Mat image;
image = imread(argv[1],1);

if(argc != 2 || !image.data)
{
cout << "No image data\n";
return -1;
}

namedWindow("Display Image",CV_WINDOW_AUTOSIZE);
imshow("Display Image",image);
waitKey(0);
return 0;
}

Я скомпилировал его с помощью этой командной строки:

g++ DisplayImage.cpp -o DisplayImage `pkg-config opencv --cflags --libs`

Не было ошибок времени компиляции, однако, когда я пытаюсь запустить полученный бинарный файл с /DisplayImage code.png Я получаю следующее сообщение об ошибке:

./DisplayImage: error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory

54

Решение

Вы не поместили общую библиотеку в место, где ее может найти загрузчик. заглянуть внутрь /usr/local/opencv а также /usr/local/opencv2 папки и посмотрите, содержит ли какая-либо из них общие библиотеки (файлы, начинающиеся с lib и обычно заканчивается в .so). когда вы найдете их, создайте файл с именем /etc/ld.so.conf.d/opencv.conf и запишите в него пути к папкам, в которых хранятся библиотеки, по одной на строку.

например, если библиотеки были сохранены в /usr/local/opencv/libopencv_core.so.2.4 тогда я бы написал это на мой opencv.conf файл:

/usr/local/opencv/

Тогда беги

sudo ldconfig -v

Если вы не можете найти библиотеки, попробуйте запустить

sudo updatedb && locate libopencv_core.so.2.4

в оболочке. Вам не нужно бежать updatedb если вы перезагрузились после компиляции OpenCV.

Рекомендации:

Об общих библиотеках в Linux: http://www.eyrie.org/~eagle/notes/rpath.html

О добавлении общих библиотек OpenCV: http://opencv.willowgarage.com/wiki/InstallGuide_Linux

91

Другие решения

Чтобы сделать это более ясным (и собрать это вместе), я должен был сделать две вещи, упомянутые выше.

1- Создать файл /etc/ld.so.conf.d/opencv.conf и запишите в него пути к папке, в которой хранятся ваши библиотеки opencv. (Ответ Кукайта)

2- Включите путь вашего opencv .so файлы в LD_LIBRARY_PATH ()

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv/lib
21

Ответ Umair R — это в основном правильный шаг для решения проблемы, так как эта ошибка раньше была вызвана отсутствием ссылок между библиотеками opencv и программой. поэтому необходимо указать конфигурацию ld_libraty_path.
пс. предполагается, что обычный путь к библиотеке:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

Я попробовал это, и это сработало хорошо.

17

Найдите папку, содержащую общую библиотеку libopencv_core.so.2.4, используя следующую командную строку.

sudo find / -name "libopencv_core.so.2.4*"

Тогда я получил результат:

 /usr/local/lib/libopencv_core.so.2.4.

Создайте файл с именем
/etc/ld.so.conf.d/opencv.conf
и напишите ему путь к папке, где хранится бинарный файл. Например, я написал /usr/local/lib/ к моему opencv.conf файл.
Запустите командную строку следующим образом.

sudo ldconfig -v

Попробуйте снова запустить команду.

7

Добавить эту ссылку:

/usr/local/lib/*.so.*

Итого:

g++ -o main.out main.cpp -I /usr/local/include -I /usr/local/include/opencv -I /usr/local/include/opencv2 -L /usr/local/lib /usr/local/lib/*.so /usr/local/lib/*.so.*
0
По вопросам рекламы [email protected]