며칠 전에 우분투를 설치하고 apt-get을 사용하여 build_essentials, opencv, highgui 등을 설치했습니다. g ++는 4.6.1이고, opencv는 2.1.0 인 것으로 보입니다. 소스에서 opencv를 빌드하십시오.Ububtu, opencv 및 링크
우리는 opencv 기능을 사용하는 소프트웨어가 있습니다. 소스 파일의 이름이 a.cpp와 b.cpp 인 것처럼 가장합니다. 나는 a.o와 b.o로 컴파일 한 다음 그 라이브러리를 .so 라이브러리 (libab.so라고 부른다)에 넣는다.
마지막으로 main이있는 파일이 있습니다 (z.cpp라고 함). 나는 그것으로부터 실행 파일을 만들려고 노력하지만, 나는 cv :: stuff에 "정의되지 않은 참조"에러를 많이 흘린다. 내 링크 라인은 다음과 같은 :
g++ -fPIC -g z.cpp -L../lib -lab -lml -lcvaux -lhighgui -lcv -lcxcore -o z.out
다음 내가 (물건 :: 이력서에있는 모두가) 정의되지 않은 참조 오류를 얻을.
흥미로운 부분은 내가 .o 파일과 직접 연결하면 괜찮습니다. 이렇게 :
g++ -fPIC -g z.cpp a.o b.o -lml -lcvaux -lhighgui -lcv -lcxcore -o z.out
작품입니다.
내가 읽은 모든 것은 이것이 링크 줄 정렬 문제 일 가능성이있는 것으로 보이지만 모든 순열을 시도하고 같은 문제가 발생하므로 실제로 내 문제는 아니라고 생각합니다. 여전히 틀리다. 누구나 내 라이브러리로 빌드 할 수있는 방법과 라이브러리에있는 .o 파일의 전체 세트를 사용하여 빌드하면 라이브러리 자체로 빌드 할 수 없는데 왜 다르게 작동하는지 아이디어가 있습니다.
이 좋아, 그래서이 ISN :
이 파일
/usr/local/lib/pkgconfig/opencv.pc 모든 컴파일에 대한 관련 정보를 포함 정말로 "해결책"은 아니지만 소스에서 opencv 2.3.1을 설치하는 일이 끝났습니다. 또한 ffmpeg (특히 v0.8!)를 설치해야했지만 이제는 모든 것이 작동합니다. 그래서, 분명히 apt-get로 얻은 opencv 빌드와 관련이 있습니다. 나는 이것을 시도하지 않았지만 나는 소스에서 2.1을 설치할 수 있었을 것이라고 생각했다. 아직도 라이브러리와 컴파일하는 이유는 확실하지 않습니다.O가 문제가 될 수 있지만 지금은 일하고 있습니다. 따라서 ... – daroo