无法在ubuntu 14.04 32bit上编译ffmpeg bohr

时间:2014-12-27 07:46:50

标签: c++ eclipse ffmpeg ubuntu-14.04 libz

我正在开发一个从网络摄像头捕获视频并将其流式传输到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相关的库)。

我尝试过以下方法:

  1. 链接libz。
  2. 尝试使用此处的说明重新编译:http://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
  3. 可能是什么问题? 为什么链接器指向i686然后返回到i386?

2 个答案:

答案 0 :(得分:2)

然后你需要把-llzma与ffmpeg的编译行放在一起。

或者我可以通过更简单的方法来做到这一点。 试试这个:http://ubuntuforums.org/showthread.php?t=2219550&p=13101922#post13101922

这很简单..

答案 1 :(得分:1)

这里真的只缺少一个额外的库。只需将-llzma添加到编译行的末尾即可。

我还需要添加其他缺少的库。如果您遇到同样的问题,请追加:

-lswresample -lm -lz

因为libavcodec包含一些math和zlib头文件,所以你必须链接到相应的库。这也是lzma的情况。