pkg-config 返回的结果不对
首先,我知道PKG_CONFIG_PATH可以添加搜索.pc文件的路径
其次,我知道PKG_CONFIG会从/usr/lib/pkgconfig里先搜索
问题: pkg-config --libs libavformat 返回的是 -lavformat
pkg-config --cflags libavformat 返回的居然是空行
这导致我编译ffmpeg的tutorial时出现undefined reference错误
而 pkg-config --libs opencv则返回的是
/usr/local/lib/libopencv_calib3d.so /usr/local/lib/libopencv_contrib.so /usr/local/lib/libopencv_core.so /usr/local/lib/libopencv_features2d.so /usr/local/lib/libopencv_flann.so /usr/local/lib/libopencv_gpu.so /usr/local/lib/libopencv_highgui.so /usr/local/lib/libopencv_imgproc.so /usr/local/lib/libopencv_legacy.so /usr/local/lib/libopencv_ml.so /usr/local/lib/libopencv_nonfree.so /usr/local/lib/libopencv_objdetect.so /usr/local/lib/libopencv_ocl.so /usr/local/lib/libopencv_photo.so /usr/local/lib/libopencv_stitching.so /usr/local/lib/libopencv_superres.so /usr/local/lib/libopencv_ts.a /usr/local/lib/libopencv_video.so /usr/local/lib/libopencv_videostab.so -lrt -lpthread -lm -ldl
总结一下: pkg-config --libs libavformat 返回的是 -lavformat也就罢了,关键是--cflags返回的是空行,这是什么情况,凭什么opencv.pc文件就返回了那么多信息呢?
附录:我用 apt-get install libavformat 安装了libavformat,libavcodec,libavdevice等等
我自己找了一下,发现apt-get install 貌似是把这些库按在了/usr/lib/i386-linux-gnu/下,该目录下有pkgconfig文件夹,放了这些库的.pc文件,贴一个出来看看
prefix=/usr
exec_prefix=${prefix}
libdir=/usr/lib/i386-linux-gnu
includedir=${prefix}/include
Name: libavcodec
Description: FFmpeg codec library
Version: 53.61.100
Requires:
Requires.private: libavutil = 51.35.100
Conflicts:
Libs: -L${libdir} -lavcodec
Libs.private: -ldl -lX11 -lXext -lXfixes -lva -lcdio_paranoia -lcdio_cdda -lcdio -ljack -lasound -lSDL -lx264 -lvpx -lvpx -lvorbisenc -lvorbis -logg -ltheoraenc -ltheoradec -logg -lspeex -lschroedinger-1.0 -lrtmp -lz -lgnutls -lpulse-simple -lpulse -lopenjpeg -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann -lmp3lame -lgsm -lfreetype -ldc1394 -lgnutls -lva -lm -pthread -lbz2 -lz
Cflags: -I${includedir}
然后贴一下opencv的.pc文件
# Package Information for pkg-config
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 2.3.1
Libs: -L${libdir} -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
Cflags: -I${includedir_old} -I${includedir_new}
~