c++ - 无法在 ubuntu 14.04 32 位上编译 ffmpeg bohr

标签 c++ eclipse ffmpeg ubuntu-14.04 libz

我正在开发一个应用程序来从网络摄像头捕获视频并将其流式传输到 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?

最佳答案

您实际上只缺少一个额外的库。只需将 -llzma 添加到编译行的末尾即可。

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

-lswresample -lm -lz

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

关于c++ - 无法在 ubuntu 14.04 32 位上编译 ffmpeg bohr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27665399/

相关文章:

c++ - 插入多个输出流?

java - Eclipse Java 格式化 : How can I stop wrapping parameters but wrap implements?

c# - 用于 concat 的 FFmpeg 管道输入

ffmpeg - FFmpeg 中分段时间的使用

.net - 如何保护用 C++ .NET 编写的应用程序

c++ - 如何在托管 C++ 中正确实现返回 "this"的类的方法?

c++ - scanf 与 cin : string as integer processing

java - 如何根据 wsdl 文件创建 SOAP Web 客户端

java - 关于java中的列表

android - 如何将解码帧从 C 复制到 Android