your programing

ubuntu 12.04에서 openCV 프로그램 컴파일 오류 "libopencv_core.so.2.4 : 공유 객체 파일을 열 수 없음 : 해당 파일 또는 디렉토리 없음"

lovepro 2021. 1. 5. 19:50
반응형

ubuntu 12.04에서 openCV 프로그램 컴파일 오류 "libopencv_core.so.2.4 : 공유 객체 파일을 열 수 없음 : 해당 파일 또는 디렉토리 없음"


우분투 12.04에서 openCV 2.4.2를 컴파일하고 설치했습니다. 아래 /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

로더가 찾을 수있는 위치에 공유 라이브러리를 배치하지 않았습니다. /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

껍질에. updatedbOpenCV를 컴파일 한 후 재부팅 한 경우 실행할 필요가 없습니다 .

참조 :

Linux의 공유 라이브러리 정보 : http://www.eyrie.org/~eagle/notes/rpath.html

OpenCV 공유 라이브러리 추가 정보 : http://opencv.willowgarage.com/wiki/InstallGuide_Linux


더 명확하게하기 위해 (그리고 그것을 합치기 위해) 위에서 언급 한 두 가지를해야했습니다.

1- 파일을 /etc/ld.so.conf.d/opencv.conf만들고 opencv 라이브러리가 저장된 폴더의 경로에 씁니다. (Answer by Cookyt)

2- .soLD_LIBRARY_PATH ()에 opencv의 파일 경로 포함

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

이 오류는 opencv libs와 프로그램 사이의 누락 된 링크로 인해 발생했기 때문에 Umair R의 대답은 대부분 문제를 해결하는 올바른 방법입니다. 따라서 ld_libraty_path 구성을 지정해야합니다. 추신. 일반적인 라이브러리 경로는 다음과 같습니다.

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

나는 이것을 시도했고 잘 작동했습니다.


다음 명령 줄을 사용하여 공유 라이브러리 libopencv_core.so.2.4가 포함 된 폴더를 찾습니다.

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

그런 다음 결과를 얻었습니다.

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

Create a file called /etc/ld.so.conf.d/opencv.conf and write to it the path to the folder where the binary is stored.For example, I wrote /usr/local/lib/ to my opencv.conf file. Run the command line as follows.

sudo ldconfig -v

Try to run the command again.


Add this link:

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

The total is:

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

ReferenceURL : https://stackoverflow.com/questions/12335848/opencv-program-compile-error-libopencv-core-so-2-4-cannot-open-shared-object-f

반응형