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

An compiling error I met when I use ffmpeg to develop

本文关键字:遇到 编译 错误 开发 ffmpeg      更新时间:2023-10-16

我使用此命令编译文件:

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

我该如何处理这个问题?

我找到了处理我的问题的方法。由于这绝对是一个库问题,因此您可以在编译之前检查需要多少个库。例如:

 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

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

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