定义

pkg-config是一款用于返回已安装库元信息的工具;

(语法)概要

pkg-config [--modversion] [--help] [--print-errors] [--silence-errors] [--cflags] [--libs] [--libs-only-L] [--libs-only-l] [--cflags-only-I] [--variable=VARIABLENAME] [--define-variable=VARIABLENAME=VARIABLEVALUE] [--uninstalled] [--exists] [--atleast-version=VERSION] [--exact-version=VERSION] [--max-version=VERSION] [LIBRARIES...]

说明

pkg-config用于检索系统中已安装库的信息;其典型应用场景是编译或链接一个或多个库(依赖检查),例如以下是Makefile中的使用场景:

program: program.c

cc program.c

'pkg-config --cflags --libs gnomeui'

pkg-config从特定配置文件中检索安装包信息,此类文件默认以.pc结尾,pkg-config在prefix/lib/pkgconfig目录下搜索,同时也会在PKG_CONFIG_PATH 环境变量指定的冒号分隔的路径列表中检索(Windows下是分号); 在pkg-config命令行指定的包名,对应去掉 .pc 扩展名后的元数据的配置文件名。如果一个库同时安装了多个版本,库名必须加版本号以便区分(例如GTK 1.2的包名可能是"gtk+"而 GTK 2.0是 "gtk+-2.0")。

命令行选项

--modversion

检索命令行指定库名版本信息,如果pkg-config能找到命令行中所有库,则将其版本号打印到标准输出,每个版本号一行,此时pkg-config成功退出。如果一个或多个库未找到,pkg-config返回非零错误码,标准输出内容为未定义。

--help

显示帮助信息并退出

--cflags

打印命令行指定的包编译时所需预处理和编译标识符,包括其他依赖所需标识符;标识符是被压缩的,以保证每个标识符只出现一次;如果命令行指定的一个或多个包元数据找不到,pkg-config返回非零错误码。

--libs

等同"--cflags",但是只打印链接标识符。和"--cflags"一样,重复的标识符被合并,第三方依赖所需标识符被打印到输出。

--libs-only-L

输出"--libs"的-L/-R部分.意思是其中定了依赖库的搜索路径,但不指定链接哪个库。

--libs-only-l

打印命令行指定库的"--libs"的-l部分。但是!"--libs-only-l" 和 "--libs-only-L"加起来可能比"--libs"涵盖内容少,因为例如-rdynamic上的差异.

Environment Variables

PKG_CONFIG_PATH

冒号分隔的.pc 文件检索路径列表。该路径检索完后默认路径也会被检索,默认路径是libdir/pkgconfig:datadir/pkgconfig。libdir是 pkg-config安装目录下的lib和data目录.

pkg-config手册的更多相关文章

  1. anaconda2下面安装opencv2.4.13.4完成----解决默认安装的问题----Thefunction is not implemented. Rebuild the library with Windows, GTK+ 2.x orCarbon support. If you are on Ubuntu or Debian, install libgtk2.0‑dev and pkg

    转载自:http://blog.csdn.net/qingyanyichen/article/details/73550924 本人下载编译安装了opencv2.4.9,oppencv2.4.10,o ...

  2. [hyperscan][pkg-config] hyperscan 从0到1路线图

    经过一系列的研究学习,知识储备之后,终于,可以开始研究hyperscan了. [knowledge][模式匹配] 字符匹配/模式匹配 正则表达式 自动机 [knowledge][perl][pcre] ...

  3. 《手把手教你构建自己的 Linux 系统》学习笔记(8)

    目录 Binutils 软件包有什么用? make -k 的作用是什么? man-pages 里有几种文档?分别表示什么意思? 如何查询指定目录的 man-pages ? 如何使用 make 命令的同 ...

  4. 通过form表单的形式下载文件。

    在项目中遇到问题,要求动态拼接uri下载文件.但是由于项目的安全拦截导致window.location.href 和 window.open等新建窗口的方法都不行. 无意间百度到了通过form表单来下 ...

  5. 【转】GCC使用简介

    Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作品之一.gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一 ...

  6. GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名(转载)

    转载自:http://www.cnblogs.com/cy163/archive/2009/03/12/1409434.html 1.gcc包含的c/c++编译器gcc,cc,c++,g++,gcc和 ...

  7. GCC 命令行具体解释

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

  8. Msys+MinGW编译VLC

      说明:本文只是对官方文档进行简单的翻译总结,旨在帮助一些英文不太好的朋友.官方文档请见wiki.videolan.org/Win32CompileMSYSNew. Msys是MinGW的一个辅助工 ...

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

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

  10. pkg-config命令的Makefile.am

    举例:通过Makefile调用pkg-config命令. pkg-config - Return metainformation about installed libraries (为了使用lib库 ...

随机推荐

  1. 路由分发admin源码

    1. 不使用include方法 1.表象 另一种路由编写方式,不用使用include 引出namespace概念 可以看到如果使用include方法,后面可带上一个参数赋值给namespace 在无n ...

  2. 关于"覆盖问题”的反思

    [HAOI2007]覆盖问题 题目描述 某人在山上种了N棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定 用3个L*L的 ...

  3. 【教程】青少年CTF机器人使用教程

    前言 本期教程适用于版本号为2.0.1-Beta的青少年CTF机器人,其他版本可能与当前版本不同. 由于之前版本的机器人重构,所以我们细化了本次的机器人逻辑,并且对机器人的功能进行了一些升级. 机器人 ...

  4. Promise的理解和使用(二)

    一.Promise的常用APIpromise的这些方法执行完成都会返回一个新的promise,promise的状态由执行的结果决定. (1) new Promise()中的excutor函数 new ...

  5. docker 安装 Influxdb-relay 使用

    转载请注明出处: 1.influxdb relay的作用和特性 数据转发:InfluxDB Relay 可以从一个或多个源(input)接收数据,并将其转发到一个或多个目标(output)的 Infl ...

  6. [glibc2.23源码]阅读源码&调试,找出free_hook-0x13分配失败的原因

    0x00 写在前面 发freebuf了:https://www.freebuf.com/articles/endpoint/373258.html 本次阅读源码是本人第一次,算是一个全新的开始.本次看 ...

  7. C#程序配置读写例子 - 开源研究系列文章

    今天讲讲关于C#的配置文件读写的例子. 对于应用程序的配置文件,以前都是用的ini文件进行读写的,这个与现在的json类似,都是键值对应的,这次介绍的是基于XML的序列化和反序列化的读写例子.对于in ...

  8. arthas的安装及使用

    arthas的安装及使用 官方文档 安装 #1.下载 https://arthas.aliyun.com/download/latest_version?mirror=aliyun #2.将下载文件上 ...

  9. 形象谈JVM-第四章-JVM内存结构

    给我一个CPU,给我一块内存,我来执行一段代码. 我要如何分配呢? new User(); 这里有一个有一个User类,如果我要new出来User对象,必须先知道它长什么样子,我先搞一块区域出来,把U ...

  10. Linux 内核音频数据传递主要流程 (上)

    Linux 用户空间应用程序通过声卡驱动程序(一般牵涉到多个设备驱动程序)和 Linux 内核 ALSA 框架导出的 PCM 设备文件,如 /dev/snd/pcmC0D0c 和 /dev/snd/p ...