pkg-config 返回的结果不对

sinapme sinapme 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
首先,我知道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}
~
...全文
评论 6
收藏 已收藏
分享
返回顶部
sinapme
Linux/Unix社区 18,828 成员 11,488 内容