我正在开发一个从网络摄像头捕获视频并将其流式传输到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相关的库)。
我尝试过以下方法:
可能是什么问题? 为什么链接器指向i686然后返回到i386?
答案 0 :(得分:2)
然后你需要把-llzma与ffmpeg的编译行放在一起。
或者我可以通过更简单的方法来做到这一点。 试试这个:http://ubuntuforums.org/showthread.php?t=2219550&p=13101922#post13101922
这很简单..
答案 1 :(得分:1)
这里真的只缺少一个额外的库。只需将-llzma添加到编译行的末尾即可。
我还需要添加其他缺少的库。如果您遇到同样的问题,请追加:
-lswresample -lm -lz
因为libavcodec包含一些math和zlib头文件,所以你必须链接到相应的库。这也是lzma的情况。