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
껍질에. updatedb
OpenCV를 컴파일 한 후 재부팅 한 경우 실행할 필요가 없습니다 .
참조 :
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- .so
LD_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
'your programing' 카테고리의 다른 글
jq: 객체에서 키의 서브셋 선택 (0) | 2023.03.13 |
---|---|
React Formik : 커스텀 onChange 및 onBlur 사용방법 (0) | 2023.03.13 |
전체 소스 트리에서 fmt로 이동 (0) | 2021.01.05 |
Windows Azure 웹 사이트 정리 (0) | 2021.01.05 |
std :: vector에서 텍스트 파일로 데이터를 쓰는 빠른 방법 (0) | 2021.01.05 |