unable to compile ffmpeg bohr on ubuntu 14.04 32bit

1.5k Views Asked by At

I'm developing an application to capture video from webcam and stream it to Android. I'm using ffmpeg latest release - 2.5.2 "Bohr" on Ubuntu 14.04 32bit and using Eclipse as IDE.

I'm receiving this error when compiling:

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

I've linked avformat (and other ffmpeg related libs).

I've tried the following:

  1. Linked libz.
  2. Tried to recompile using instructions from here: http://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

What could be the problem? Why linker points to i686 and then go back to i386?

2

There are 2 best solutions below

0
On BEST ANSWER

You are really only missing an additional library here. Just add -llzma to the end of your compilation line.

I additionally had to add other missing libraries. Just append in case you are facing the same problem:

-lswresample -lm -lz

It is because libavcodec includes some math and zlib headers, so you must link to the respective libraries as well. This is also the case for lzma.

1
On

then you need to put -llzma with the compilation line of ffmpeg.

or i have an alternative to do it via simpler method. Try this: http://ubuntuforums.org/showthread.php?t=2219550&p=13101922#post13101922

it will be simple..