一、编译和连接

一般来说,如果库的头文件不在 /usr/include 目录中,那么在编译的时候需要用 -I 参数指定其路径。由于同一个库在不同系统上可能位于不同的目录下,用户安装库的时候也可以将库安装在不同的目录下,所以即使使用同一个库,由于库的路径的不同,造成了用 -I 参数指定的头文件的路径也可能不同,其结果就是造成了编译命令界面的不统一。如果使用 -L 参数,也会造成连接界面的不统一。编译和连接界面不统一会为库的使用带来麻烦。

为了解决编译和连接界面不统一的问题,人们找到了一些解决办法。其基本思想就是:事先把库的位置信息等保存起来,需要的时候再通过特定的工具将其中有用的信息提取出来供编译和连接使用。这样,就可以做到编译和连接界面的一致性。其中,目前最为常用的库信息提取工具就是下面介绍的 pkg-config。

pkg-config 是通过库提供的一个 .pc 文件获得库的各种必要信息的,包括版本信息、编译和连接需要的参数等。这些信息可以通过 pkg-config 提供的参数单独提取出来直接供编译器和连接器使用。

The pkgconfig package contains tools for passing the include path and/or library paths to build tools during the make file execution.

pkg-config is a function that returns meta information for the specified library.

The default setting for PKG_CONFIG_PATH is /usr/lib/pkgconfig because of the prefix we use to install pkgconfig. You may add to PKG_CONFIG_PATH by exporting additional paths on your system where pkgconfig files are installed. Note that PKG_CONFIG_PATH is only needed when compiling packages, not during run-time.

在默认情况下,每个支持 pkg-config 的库对应的 .pc 文件在安装后都位于安装目录中的 lib/pkgconfig 目录下。例如,我们在上面已经将 Glib 安装在 /opt/gtk 目录下了,那么这个 Glib 库对应的 .pc 文件是 /opt/gtk/lib/pkgconfig 目录下一个叫 glib-2.0.pc 的文件:

prefix=/opt/gtk/

exec_prefix=${prefix}

libdir=${exec_prefix}/lib

includedir=${prefix}/include

glib_genmarshal=glib-genmarshal

gobject_query=gobject-query

glib_mkenums=glib-mkenums

Name: GLib

Descriptio

linux如何打开pkg软件,Linux系统pkg相关推荐

  1. linux下cpu性能测试软件,Linux系统性能测试工具(四)——CPU性能测试工具之super_pi、sysbench...

    在Linux系统下运行微信Web开发者工具 微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确 ...

  2. linux怎么打开.o文件,Linux下文件I/O操作的相关知识

    Linux文件I/O主要指的是文件的输入输出,很多初学者对文件的I/O不是很了解,Linux文件I/O的操作较多,下面小编就给大家详细介绍下Linux文件I/O. linux 文件I/O教程(1) 一 ...

  3. linux怎么打开rdp文件,Linux运维知识:linux实现rdp访问

    本文主要向大家介绍了Linux运维知识的linux实现rdp访问,通过具体的内容向大家展现,希望对的大家学习Linux运维知识有所帮助. 远程访问linux系统,我们常用的有终端ssh.图形界面VNC ...

  4. linux命令文件加密软件,Linux系统下如何加密文件,简单实用的文件管理器GnuPG

    我们知道,Linux 桌面版和服务器版具有卓越的安全性.然而这并不意味着你可以放松警惕.你应该一直认为你的数据总是很快就会被破坏.也就是说,你可能需要使用各种加密工具.比如 GnuPG,它可以让你加密 ...

  5. linux ssh客户端_WinSCP软件双系统(Win-Linux)文件传输教程

    WinSCP软件是windows下的一款使用ssh协议的开源图形化SFTP客户端,也就是一个文件传输的软件,它有什么优点吗,咱们嵌入式开发中经常会将windows中的文件复制到linux系统当中,比较 ...

  6. linux mint必装软件,Linux mint 系统实用软件推荐和安装

    Linux mint 系统实用软件的安装 1 . JDK 虽然 Linux mint 自带了openjdk,但有时候这并不是我们想要的,所以还是安装 Oracle 官方给我们提供的 最新jdk,此处下 ...

  7. linux怎么打开云硬盘,Linux系统云服务器如何挂在磁盘

    前言: 将以下命令直接全部复制,粘贴到 SSH 终端即可:# mkfs.ext4 /dev/sdb1 # echo '/dev/sdb1 /home ext4 defaults 0 0'>> ...

  8. linux打开dc软件,Linux bc/dc命令的初步使用

    本文转载自:http://hi.baidu.com/liyong_0802/item/9f6c891bf6faa4526826bb23 198dc :一个任意精度的计算器 语 法 dc[选择参数][ ...

  9. linux打开img软件,linux如何打开img

    本页目录 步骤一:安装Beego 步骤二:创建应用 步骤三:打包应用 步骤四:创建应用并完成部署 常见问题 更多信息 Beego是一个快速开发Go应用的HTTP框架,可以用来快速开发API.Web.后 ...

  10. linux下的遥控器软件,Linux系统下遥控器的配置与使用方法

    你有没有想象过能够坐在沙发上,或者躺在床上,拿着遥控器像操作电视一样来操作电脑?可能你已经见到过市场上出现的那种电脑遥控器,不过它们都是基于windows下的.其实,通过一定的配置,在linux平台上 ...

最新文章

  1. js new 运算符到底做了什么?
  2. 直线拟合的实现步骤和相关算子
  3. .Net winform中嵌入Flash
  4. 如何取消支付宝工资理财
  5. 阿里云系列——4.网站备案后续(详细步骤)---2015-11.12
  6. 人生苦短,我用Python——Life is short, You need Python
  7. 腾讯云linux服务器怎么使用图形化界面_自己搭建一个自动签到和远程下载的服务器...
  8. ITK:计算梯度各向异性扩散
  9. oracle sql优化指导,基于Oracle的sql优化(1)
  10. librdkafka 安装
  11. TG Pro for Mac(Mac电脑硬件温度监测工具)
  12. python爬虫异步加载图片_python爬虫程序 异步加载爬虫knewone.com实例
  13. 关于oracle的物理dg,单机上创建物理DG(Oracle 10g单实例)
  14. 个人健康管理系统1.0(微信小程序+java(ssm框架)+layui+爬虫+mysql)(新手学习之路,带源码,仅供学习)
  15. JS散度(Jensen-Shannon)
  16. 全国、省、地级市、区县乡镇级矢量地图2021年(最新)
  17. 低版本内核编译奇怪错误
  18. 基于有道API的命令行词典(golang版)
  19. 如何从godaddy转出域名
  20. 几何分布的期望和方差公式推导_平方差公式证明推导过程及运用详解(数学简便计算方法之一)...

热门文章

  1. [HAOI2009]毛毛虫(树形dp)
  2. AppStore下载数据查看
  3. 某程序员披露华为外包员工现状:工作氛围好,没有歧视,但转正后也不算正式员工?...
  4. 算法学习笔记12:散列表
  5. 【第三方互联】5、网页添加QQ好友及QQ群组
  6. c 语言编写的一元二次方程的根,C#程式求一元二次方程根
  7. Fedora14源代码获取方法----直接到官网去下载
  8. java一般用来开发什么_Java能做什么
  9. 输入一英文字符串(字符串长度限制在200个字符以内),单词间仅用一个或多个空格间隔(即没有标点符号),编写程序将此字符串中第1个最长的单词输出。 输入输出样例: memory has no re
  10. 朱生豪先生的情书 ---- 醒来觉得甚是爱你