我们平常都是这样用pkg-config的
$gcc main.c pkg-config --cflags --libs gtk+-2.0 -o main
上面的编译命令中,pkg-config --cflags --libs gtk+-2.0的作用就如前面所说的,把gtk的头文件路径和库文件列出来,让编译去获取。–cflags和–libs分别指定头文件和库文件。

pkg-config 是在 PKG_CONFIG_PATH 目录下寻找pc文件来确定各个包的头文件的目录和库的目录
默认在这里面有
/usr/local/lib/pkgconfig

举例opencv.pc


prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/includeName: OpenCV
Description: Open Source Computer Vision Library
Version: 3.4.10
Libs: -L${exec_prefix}/lib -lopencv_shape -lopencv_dnn -lopencv_highgui -lopencv_objdetect -lopencv_viz -lopencv_superres -lopencv_videostab -lopencv_video -lopencv_photo -lopencv_ml -lopencv_stitching -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir_old} -I${includedir_new}

随便写一个opencv 程序如下

#include "highgui.h" int main(int argc, char** argv)
{const char *imgpath = "opencv.jpg";IplImage *img = cvLoadImage(imgpath);//加载图像文件至内存cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE);//创建一个名为Example1的窗口cvShowImage("Example1", img);//显示图像cvWaitKey(0);//等待用户触发按键cvReleaseImage(&img);//释放图片占用的内存cvDestroyWindow("Example1");//销毁窗口return 0;
}

保存然后使用pkg-config 来寻找对的头文件和库,最后使用gcc编译
链接对应的头文件
pkg-config --cflags opencv
这句话对应的就是

pkg-config --cflags opencv

链接对应的库
pkg-config --libs opencv

-L/usr/local/lib -lopencv_shape -lopencv_dnn -lopencv_highgui -lopencv_objdetect -lopencv_viz -lopencv_superres -lopencv_videostab -lopencv_video -lopencv_photo -lopencv_ml -lopencv_stitching -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core

完整使用gcc编译代码如下

gcc opcv.cpp `pkg-config --cflags --libs opencv` -o opencvtest

pkg-config 与gcc 配合的使用相关推荐

  1. linux双机脚本pkg如何生效,linux里命令pkg config工具的使用

    一.编译和连接 一般来说,如果库的头文件不在 /usr/include 目录中,那么在编译的时候需要用 -I 参数指定其路径.由于同一个库在不同系统上可能位于不同的目录下,用户安装库的时候也可以将库安 ...

  2. GCC编译选项--创建与使用库

    系统函数库使用 linux系统函数库位于/usr/lib和/lib目录下 #include <math.h> #cc test.c -lm -o test 动态库创建 1).编译时指定-f ...

  3. gcc编译参数[转]

    1.GCC包含的C/C++编译器 gcc.cc.c++.g++ gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译 2.gcc的基本用法 gcc test ...

  4. gcc编译器命令使用详解

    1.gcc包含的c/c++编译器 gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什 么意思:))一般c程序就用gcc编译,c++程序就用g++编 ...

  5. [转]GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名

    1.gcc包含的c/c++编译器 gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什 么意思:))一般c程序就用gcc编译,c++程序就用g++编 ...

  6. Gcc详解以及静态库、动态库生成

    [转] Gcc详解以及静态库.动态库生成 http://www.360doc.com/content/10/0619/14/1795182_33985297.shtml 1.gcc包含的c/c++编译 ...

  7. GCC 命令选项使用详解

    GCC 命令行详解[转帖] 1.gcc包含的c/c++编译器 gcc.cc.c++.g++ gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译 2.gcc ...

  8. GCC 命令行具体解释

    作者: www.linuxfans.org mozilla 1.gcc包括的c/c++编译器 gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的.(没有看太明确前面这半句是什 ...

  9. 透过源码领悟GCC到底在干些什么

    GCC源码分析(一)--介绍与安装 GCC源码分析(一)--介绍与安装 目录(?)[-] 一GCC的作用和运行机制 二GCC的安装 上半年一直在做有关GCC和LD的项目,到现在还没做完.最近几天编程的 ...

最新文章

  1. “比特币耶稣”:看好比特币现金,比特币大势已去
  2. linux里打包和压缩文件,linux ---打包和压缩文件
  3. 007_html头部元素
  4. linux命令之查看程序动态库依赖-ldd
  5. 【REST】REST和JAX-RS相关知识介绍
  6. Java笔记(基础第二篇)
  7. C#中常用的几种读取XML文件的方法
  8. 安卓安卓移动操作系统优缺点
  9. 小米12 Ultra外观设计曝光:白色陶瓷机身 后置硕大相机模组
  10. 周报_2013第02周(2013/01/06-2013/01/12)
  11. No goals have been specified for this build. You must specify a valid lifecycle phase or a goal.....
  12. (转)AppDomain 和动态加载
  13. ios开发之--UITextField光标右移
  14. 抖音热门技术全套 手机修改视频md5软件ios
  15. 嵌入式论坛展示微控制器、工具、软件、物联网、连接性、安全性
  16. bzoj2429- 聪明的猴子
  17. 安装office提示Office 16 Click-to-Run Extensibility Component
  18. 20161214_namelist.input说明
  19. github推送Please make sure you have the correct access rights and the repository exists.
  20. 网页布局中的 px,em,rem,pt

热门文章

  1. 20230104-css
  2. 半小时漫画经济学2:金融危机篇-笔记
  3. 免工具下载微信视频号中视频,超简单
  4. PS.14-加深工具组
  5. 接口(服务)之间的调用方式有哪些?/软件系统之间接口的几种通讯方式?
  6. 计算机辅助教学是人工智能应用,人工智能技术在计算机辅助教学中的应用与实现...
  7. 企业定制crm客户管理系统需要做哪些准备?
  8. happen-before
  9. flume+es+kibana日志系统
  10. JavaScript谬论体系