问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux里的pkgconfig相关问题

发布网友 发布时间:2022-04-24 22:24

我来回答

2个回答

热心网友 时间:2023-10-13 06:53

指定PATH环境变量路径就好了

 一般来说,如果库的头文件不在 /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 ring 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 ring 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
  Description: C Utility Library
  Version: 2.12.13
  Libs: -L${libdir} -lglib-2.0
  Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include
  使用 pkg-config 的 --cflags 参数可以给出在编译时所需要的选项,而 --libs 参数可以给出连接时的选项。例如,假设一个 sample.c 的程序用到了 Glib 库,就可以这样编译:
  $ gcc -c `pkg-config --cflags glib-2.0` sample.c
  然后这样连接:
  $ gcc sample.o -o sample `pkg-config --libs glib-2.0`
  或者上面两步也可以合并为以下一步:
  $ gcc sample.c -o sample `pkg-config --cflags --libs glib-2.0`
  可以看到:由于使用了 pkg-config 工具来获得库的选项,所以不论库安装在什么目录下,都可以使用相同的编译和连接命令,带来了编译和连接界面的统一。
  使用 pkg-config 工具提取库的编译和连接参数有两个基本的前提:
  库本身在安装的时候必须提供一个相应的 .pc 文件。不这样做的库说明不支持 pkg-config 工具的使用。
  pkg-config 必须知道要到哪里去寻找此 .pc 文件。
  GTK+ 及其依赖库支持使用 pkg-config 工具,所以剩下的问题就是如何告诉 pkg-config 到哪里去寻找库对应的 .pc 文件,这也是通过设置搜索路径来解决的。
  对于支持 pkg-config 工具的 GTK+ 及其依赖库来说,库的头文件的搜索路径的设置变成了对 .pc 文件搜索路径的设置。.pc 文件的搜索路径是通过环境变量 PKG_CONFIG_PATH 来设置的,pkg-config 将按照设置路径的先后顺序进行搜索,直到找到指定的 .pc 文件为止。
  安装完 Glib 后,在 bash 中应该进行如下设置:
  $ export PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig:$PKG_CONFIG_PATH
  可以执行下面的命令检查是否 /opt/gtk/lib/pkgconfig 路径已经设置在 PKG_CONFIG_PATH 环境变量中:
  $ echo $PKG_CONFIG_PATH
  这样设置之后,使用 Glib 库的其它程序或库在编译的时候 pkg-config 就知道首先要到 /opt/gtk/lib/pkgconfig 这个目录中去寻找 glib-2.0.pc 了(GTK+ 和其它的依赖库的 .pc 文件也将拷贝到这里,也会首先到这里搜索它们对应的 .pc 文件)。之后,通过 pkg-config 就可以把其中库的编译和连接参数提取出来供程序在编译和连接时使用。
  另外还需要注意的是:环境变量的设置只对当前的终端窗口有效。如果到了没有进行上述设置的终端窗口中,pkg-config 将找不到新安装的 glib-2.0.pc 文件、从而可能使后面进行的安装(如 Glib 之后的 Atk 的安装)无法进行。
  在我们采用的安装方案中,由于是使用环境变量对 GTK+ 及其依赖库进行的设置,所以当系统重新启动、或者新开一个终端窗口之后,如果想使用新安装的 GTK+ 库,需要如上面那样重新设置 PKG_CONFIG_PATH 和 LD_LIBRARY_PATH 环境变量。

热心网友 时间:2023-10-13 06:54

指定PATH环境变量路径就好了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
哪个牌子复印机好 复印店用什么型号的复印机好 开复印店需要什么设备 家用打印复印机哪个好 如何分辨鞋底是不是空心格子底? Ubuntu10.04下安装Oracle11g 超市监控多少钱 超市防盗器要多少钱 超市防盗系统多少钱 智能存放柜管理系统 48小时核酸检测结果在哪里查询-48小时核酸检测怎么看结果 在cygwin编译环境下pkg-config怎么安装 怎么源码安装 PKGCONFIGPATH设置转 ubuntu下怎样安装pkg-config 如何安装pkg-config 桌面锁定怎么解除华为 怎么取消短号家庭网里的副号 在电脑旁放水能防辐射吗? 电脑调色的漆还用加水么 请问视频剪辑高手可以给视频添加一张图片水印,并保存到电脑吗? 在电脑上批量图片加上自定义的地址日期? 电脑上使用什么软件能如下图为图片增加时间水印 电脑中lightroom如何设置和添加水印介 如何在电脑上读取照片GPS信息,位置地点等批量自动添加水印到照片上? 在电脑上怎么添加水印 中国移动家庭网套餐副号怎么解除 车子出险了换保险公司买可影响 更换保险公司会影响保费么 去年的车险还没过就换保险公司,会有什么影响吗? 更换车险的保险公司会带来哪些影响? 自己的车险今年没有出过险,想换一家保险公司,会不会影响保险打折? linux 中pkg-config的一个小问题 pkg-config怎么确定库的版本 Bounce paradise无法安装 在ubuntu终端下输入pkg-config --libs sdl 会返回什么内容 如何设置使用gstreamer1.0 而不使用gstreamer0.1 libnfnetlink怎么安装 驾照证换证体检项目有哪些 家庭网短号551那类的,主号如果把副号删除了副号会不会收到短信?快帮帮忙说说 德龙咖啡机说明书,使用前必读 德龙咖啡机怎么样 德龙咖啡机使用方法介绍 德龙咖啡机如何使用教程 德龙bco410咖啡机怎么用 德龙咖啡机21.117的使用方法的视频,初次开机怎么操作 德龙咖啡机46.860B中文说明书说明书? 松下雀巢兰奇里奥飞利浦胶囊德龙 咖啡机如何使用? 徳龙咖啡机22110中文说明书 德龙意式半自动咖啡机ce156怎样使用 德龙咖啡机怎么样?教你咖啡机除垢 德龙咖啡机eco灯有什么用 德龙咖啡机long按键什么意思