我使用ffmpeg开发时遇到的编译错误

时间:2018-01-26 06:57:37

标签: c++ ffmpeg

我使用此命令编译文件:

g++ rec.cpp -o rec -I /usr/local/include -L /usr/local/lib -lavformat -lavcodec -lavutil -lavdevice -lswscale -lasound -ldl -pthread -lz -lbz2 -lswresample -llzma -lva -lX11

执行完毕后我收到错误:

/usr/bin/ld: /usr/local/lib/libavdevice.a(xcbgrab.o): undefined reference to symbol 'xcb_setup_pixmap_formats_length'//usr/lib/x86_64-linux-gnu/libxcb.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。因为它肯定是一个库问题所以你可以在编译之前检查你需要多少个库。例如:

 pkg-config --libs libavcodec libavformat libswscale libavutil libavdevice

然后它会告诉你:

-L/usr/local/lib -lavdevice -lm -lxcb -lxcb-shm -lxcb -lxcb-shape -lxcb -lxcb-xfixes -lxcb-render -lxcb-shape -lxcb -lasound -lavfilter -pthread -lm -lva -ldl -lswscale -lm -lavformat -lm -lbz2 -lz -lavcodec -pthread -lm -llzma -lz -lva -ldl -lswresample -lm -lavutil -pthread -lva -lva-drm -lva -lva-x11 -lX11 -lm -lva -ldl

这些库是您编译时所需的,然后就完成了。

答案 1 :(得分:0)

您可能还需要pkg-config --cflags libavcodec libavformat libswscale libavutil libavdevice添加CFLAGS或CXXFLAGS。