1

我正在开发一个应用程序来从网络摄像头捕获视频并将其流式传输到 Android。我在 Ubuntu 14.04 32 位上使用 ffmpeg 最新版本 - 2.5.2 "Bohr" 并使用 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

可能是什么问题呢?为什么链接器指向i686,然后又回到i386?

4

2 回答 2

2

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

我还必须添加其他缺少的库。如果您遇到同样的问题,只需附加:

-lswresample -lm -lz

这是因为 libavcodec 包含一些数学和 zlib 头文件,因此您还必须链接到相应的库。这也是lzma的情况。

于 2015-04-13T13:34:20.347 回答
2

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

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

会很简单的。。

于 2014-12-27T10:20:49.390 回答