Я занимаюсь разработкой приложения для захвата видео с веб-камеры и передачи его на Android. Я использую последнюю версию ffmpeg — 2.5.2 «Bohr» в Ubuntu 14.04 32bit и использую Eclipse в качестве IDE.
Я получаю эту ошибку при компиляции:
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).
Я пробовал следующее:
В чем может быть проблема?
Почему компоновщик указывает на i686, а затем возвращается на i386?
Вы действительно только пропускаете дополнительную библиотеку здесь. Просто добавьте -llzma в конец строки компиляции.
Мне также пришлось добавить другие недостающие библиотеки. Просто добавьте, если вы столкнулись с той же проблемой:
-lswresample -lm -lz
Это потому, что libavcodec включает в себя некоторые математические и zlib-заголовки, поэтому вы также должны ссылаться на соответствующие библиотеки. Это также касается lzma.
тогда вам нужно поставить -llzma со строкой компиляции ffmpeg.
или у меня есть альтернатива, чтобы сделать это с помощью более простого метода.
Попробуй это: http://ubuntuforums.org/showthread.php?t=2219550&р = 13101922 # post13101922
это будет просто ..