pkg-config可用与列举出某个库的相关信息,比如此库的路径、相关头文件路径等,这在程序编译时将非常有用。例如,现在要编译一个依赖librtmp.so库的程序。去哪找librtmp.so相关的头文件呢?librtmp.so库又在哪呢?这是一个大问题,但有了pkg-config后这些都不是问题。先使用以下命令看看:

xjh@debian:~$ pkg-config --cflags librtmp
-I/usr/local/includexjh@debian:~$ pkg-config --libs librtmp
-L/usr/local/lib -lrtmp -lz -lssl -lcrypto

看到没,pkg-config能找出头文件的路径,也能找出库存放在哪,而且还能知道依赖的其它库。

有了pkg-config后,当我编译程序要使用librtmp.so库时,就可以这么写:

xjh@debian:~$ gcc sample.c -o sample `pkg-config --cflags --libs librtmp`

哈哈哈哈,有了pkg-config,妈妈再也不用担心我程序编译时找不到库了。

那么,问题也来了,pkg-config又是如何知道库存放路径及头文件路径等信息的呢?

答案就在.pc文件中。库文件编译完成后,会在{installed_home/lib/}下生成产生一个名为pkgconfig的目录,内含该链接库的.pc文件,此文件记录了改库的相关信息。为了能被查找读取到,需要将该.pc文件安装到 /usr/lib/pkgconfig/ 目录中,或在PKG_CONFIG_PATH环境变量中加入该.pc文件的安装路径。这样做的目的是为了使依赖此库的其它程序能够借助pkg-config自动链接该库,避免编译期错误。

pkg-config常用参数:

--list-all     列出所有已安装的共享库
--cflags     列出指定共享库的预处理和编译flag。
--libs     列出指定共享库的链接flag。

环境变量 PKG_CONFIG_PATH 用于指定pkg-config查找.pc文件的路径。此外,pkg-config还会查找/usr/lib/pkgconfig/下的.pc文件。

像这样设置环境变量:export PKG_CONFIG_PATH=/usr/local/lib

pkg-config简介 pkgconfig相关推荐

  1. SpringCloud Config简介

    简介 Spring Cloud Config为分布式系统的外部配置提供服务端(server)和客户端(client)的支持.Config服务端提供了一个集中的地方来管理所有环境下各个应用的配置,Con ...

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

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

  3. 【Qt】ubuntu QtCreator的pro文件中使用pkg-config

    试验环境 ubuntu14.04.5 opencv2.4.13.6 Qt Creator 4.0.3 Qt 5.6 使用方法 在pro文件中,添加opencv头文件路径 INCLUDEPATH += ...

  4. Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config

    在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config,它支持配 ...

  5. git config命令使用

    1. git config简介 我们知道config是配置的意思,那么git config命令就是对git进行一些配置.而配置一般都是写在配置文件里面,那么git的配置文件在哪里呢?互动一下,先问下大 ...

  6. SpringCloud Config Server搭建

    文章目录 1 创建Git仓库 2 创建应用配置文件 3 将应用配置文件commit到Git仓库中 4 创建Config Server应用 5 配置运行Config Server 6 访问Config ...

  7. Spring Cloud Config入门(本地配置)

    转载自 https://www.cnblogs.com/zcr3108346262/p/7602314.html spring cloud config 简介 Spring Cloud Config为 ...

  8. springcloud config配置中心概述

    Spring Cloud Config简介 Spring Cloud Config 是 Spring Cloud 家族中最早的配置中心,虽然后来又发布了 Consul 可以代替配置中心功能,但是 Co ...

  9. SpringCloud微服务(06):Config组件,实现配置统一管理

    一.Config简介 在微服务系统中,服务较多,相同的配置:如数据库信息.缓存.参数等,会出现在不同的服务上,如果一个配置发生变化,需要修改很多的服务配置.spring cloud提供配置中心,来解决 ...

最新文章

  1. R语言ggplot2可视化、使用axis.ticks.length函数设置坐标轴间隔标签竖线的长度、并设置坐标轴间隔标签在图像内部(刻度标记放置在图像内部)
  2. sql实现random sample_web验证码的简单实现
  3. 1毛钱的CDN你家的网站会用吗?
  4. 我的世界java1.15.2光影_快去打卡吧!海南首个“360光影馆”落户三亚
  5. was更换java版本,WAS如何更换JDK
  6. 老罗android oat,入门ART虚拟机(5)——OAT文件
  7. 【POJ3190】Stall Reservations
  8. uva 563(最大流)
  9. sql 将8位字符串转换成日期型
  10. 合肥工业大学机器人足球仿真robcup作业一(python实现)附代码有注释
  11. oracle的odac dll,.NET2.0中施用最少的ODAC动态库文件连接Oracle数据库
  12. css 所有后代元素,CSS 选择子元素和后代元素
  13. arduino python scratch_arduino怎么和scratch用
  14. 用防火墙可以防御DDoS吗?
  15. Qt5 QFileDialog中文英文交界处乱码问题
  16. CryEngine5.3 问题
  17. 程序员你可以考虑安装的15款谷歌插件
  18. 【关于Java方法的学习】
  19. 【每日一练:SQL】写一条SQL统计连续三个月金额大于0及每个月的金额
  20. 【转】VB6和VB.NET的区别

热门文章

  1. java - 把日志生成到指定目录
  2. Java 并发编程:ThreadLocal 的使用及其源码实现
  3. 年末盘点 2016 年最严重的 7 起 DDoS 攻击事件
  4. 用户人品预测大赛--getmax队--竞赛分享
  5. buffers和cache的区别
  6. [Android]关于Root
  7. 需要注意的小问题------闹的笑话
  8. 无需安装的CLI才是最好的
  9. IDC公司:服务器类微处理器市场最新预测
  10. 关于Java招聘那点事