我使用此命令编译文件:
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
我怎么能解决这个问题?
答案 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。