2014-12-27 9 views
0

웹캠에서 비디오를 캡처하고 Android로 스트리밍하는 응용 프로그램을 개발하고 있습니다. 내가 ffmpeg 최신 릴리스 - 2.5.2 "보어"우분투 14.04 32 비트 및 IDE로 이클립스 사용하여 사용하고 있습니다. 컴파일 할 때우분투에서 ffmpeg bohr를 컴파일 할 수 없습니다. 14.04 32bit

나는이 오류가 발생 해요 :

g++ -L/usr/local/lib -L/home/idanhahn/ffmpeg/ffmpeg_build/lib -o "camera" ./src/.metadata/.plugins/org.eclipse.cdt.make.core/specs.o ./src/CameraSec.o ./src/camera.o ./.metadata/.plugins/org.eclipse.cdt.make.core/specs.o -lz -lswscale -lopencv_core -lavcodec -lavutil -lpthread -lboost_thread -lboost_system -lboost_date_time -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann -lavformat 
/usr/bin/ld: /home/idanhahn/ffmpeg/ffmpeg_build/lib/libavformat.a(http.o): undefined reference to symbol 'inflateInit2_' 
/usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/libz.so: error adding symbols: DSO missing from command line 
collect2: error: ld returned 1 exit status 

내가 연결 한 avformat (및 기타는 FFmpeg 관련 libs와).

  1. 링크 libz :

    나는 다음과 같은 시도했습니다.

  2. 여기에서 사용 지침을 다시 컴파일 시도 : http://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

어떤 문제가 될 수 있을까? 링커가 i686을 가리킨 다음 i386으로 돌아간 이유는 무엇입니까?

+0

-lz를 마지막 인수로 사용하십시오. – lonewasp

+0

감사합니다. ''/ usr/bin/ld : /home/idanhahn/ffmpeg/ffmpeg_build/lib/libavcodec.a(tiff.o) :에 대한 정의되지 않은 참조. 기호 'lzma_code @@ XZ_5.0' //lib/i386-linux-gnu/liblzma.so.5 : 기호 추가 오류 : 명령 줄에서 DSO가 누락되었습니다. ' – Hahn

답변

1

당신은 정말 여기 만 추가 라이브러리가 누락되었습니다. 편집 줄 끝 부분에 -llzma를 추가하십시오.

추가 누락 된 라이브러리를 추가해야했습니다. 다만 경우에 당신이 같은 문제에 직면하고 추가 :

-lswresample -lm -lz

당신은뿐만 아니라 각각의 라이브러리에 연결해야합니다 그래서 위해 libavcodec은, 일부 수학, ZLIB 헤더를 포함하고 있기 때문입니다. 이것은 또한 lzma의 경우입니다.

2

그러면 ffmpeg의 컴파일 행에 -llzma를 입력해야합니다.

또는 나는 간단한 방법으로이를 수행 할 수있는 대안이 있습니다. 이 시도 : http://ubuntuforums.org/showthread.php?t=2219550&p=13101922#post13101922

는 간단합니다 ..

+0

jon-severinsson 릴리스가 매우 오래된 버전이며 최신 버전이 컴파일되지 않습니다. 버전의 ffmpeg (보어), 나는 거기에 mc3man에 의해 만들어진 최신 버전이 있다고 생각하지만,이 학습 경험이 있기 때문에 공식 릴리스와 함께 "권리를 얻으려면"싶습니다. 감사! – Hahn