使用pkg-config获取需要的gcc -I(大写i) -L -l(小写l)参数

通常安装一个大型库后,你可能会不知道编译时该链接哪个库,又或者库和头文件在哪里,freedesktop提供了一个小工具pkg-config用来帮助用户理清这些问题。

$ apt install pkg-config

该软件的最常用的两个参数是--cflags和--libs,前者用来输出头文件目录(即-I),后者用来输出链接库,即(-L和-l)

比如我们现在要链接opencv库,首先是--cflags

yachen@szmint19:~$ pkg-config --cflags opencv
-I/usr/include/opencv

可以看到,直接输出了opencv头文件的目录

再是--libs

yachen@szmint19:~$ pkg-config --libs opencv
-lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_datasets -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_line_descriptor -lopencv_optflow -lopencv_video -lopencv_plot -lopencv_reg -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_rgbd -lopencv_viz -lopencv_surface_matching -lopencv_text -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_xobjdetect -lopencv_objdetect -lopencv_ml -lopencv_xphoto -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_photo -lopencv_imgproc -lopencv_core

可以看到,这个命令将opencv所有链接库都输出出来了。

这样,我们编译时就可以不用到处找要链接的到底是哪个库了,直接

$ gcc a.cpp -o a -$(pkg-config --cflags --libs opencv)

便可以直接编译一个依赖opencv的程序

此处评论已关闭