невозможно скомпилировать ffmpeg bohr на ubuntu 14.04 32bit

0

Я разрабатываю приложение для захвата видео с веб-камеры и передачи его на 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 libs).

Я пробовал следующее:

  1. Связанный libz.
  2. Попробовал перекомпилировать с помощью инструкций отсюда: http://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

В чем может быть проблема? Почему линкер указывает на i686, а затем возвращается к i386?

  • 0
    Попробуйте -lz в качестве последнего аргумента.
  • 0
    Спасибо! пробовал, но не уверен, что это исправлено, теперь я получаю другую ошибку: /usr/bin/ld: /home/idanhahn/ffmpeg/ffmpeg_build/lib/libavcodec.a(tiff.o): undefined reference to symbol 'lzma_code@@XZ_5.0'//lib/i386-linux-gnu/liblzma.so.5: error adding symbols: DSO missing from command line
Теги:
ffmpeg
ubuntu-14.04
libz

2 ответа

1
Лучший ответ

Здесь вам просто не хватает дополнительной библиотеки. Просто добавьте -llzma в конец вашей строки компиляции.

Мне также пришлось добавлять другие недостающие библиотеки. Просто добавьте в случае, если вы столкнулись с одной и той же проблемой:

-lswresample -lm -lz

Это связано с тем, что libavcodec включает в себя некоторые заголовки math и zlib, поэтому вы также должны ссылаться на соответствующие библиотеки. Это также относится к lzma.

2

то вам нужно поставить -llzma с линией компиляции ffmpeg.

или у меня есть альтернатива сделать это с помощью более простого метода. Попробуйте следующее: http://ubuntuforums.org/showthread.php?t=2219550&p=13101922#post13101922

это будет просто..

  • 0
    Релиз jon-severinsson очень старый, и это не скомпилирует последнюю версию ffmpeg (bohr), я думаю, что есть более новая версия, созданная mc3man, но так как это опыт обучения, я хотел бы «сделать это правильно» с официальным релизом , Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню