pkg-config工具的使用

作者: 雪域迷影 | 来源:发表于2020-11-04 00:08 被阅读0次

一、 pkg-config简介

1、关于pkg-config工具下面这篇博客有个简单的介绍,链接如下:

理解 pkg-config 工具

2、pkg-config软件官网:http://www.freedesktop.org/wiki/Software/pkg-config/

二、最近在看glib、dbus、gtk的一些例子程序,在编译程序时经常找不到头文件和库文件路径。并且使用cmake进行rpm打包和编译时会使用到pkg-config这个实用的工具。

pkg-config能根据软件安装时软件的.pc配置文件路径找到相应的头文件路径和库文件路径,如我的ubuntu12.04下默认安装glib-2.0后在 /usr/lib/i386-linux-gnu/pkgconfig/

路径下有glib-2.0.pc,其内容如下:

prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib/i386-linux-gnu
includedir=${prefix}/include

glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums

Name: GLib
Description: C Utility Library
Version: 2.32.3
Requires.private: libpcre
Libs: -L${libdir} -lglib-2.0 
Libs.private: -pthread -lrt  -lpcre    
Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include 
image.gif

根据glib-2.0.pc文件的描述我们可以看到使用sudo apt-get install glib-2.0后glib-2.0的各个文件存放路径如下:

可执行文件安装路径:/usr

.h头文件安装路径为:/usr/include/glib-2.0和/usr/lib/i386-linux-gnu/glib-2.0/include

.so库文件安装路径为:/usr/lib/i386-linux-gnu

三、在ubuntu12.04下安装好glib-2.0和gtk+-2.0后,下面来看两个例子。

1、一个使用了glib库的简单程序hello.c,代码如下:

//hello.c
#include <glib.h>

int main(int argc, char *argv[])
{
    g_print("welcome to glib programming world!\n");

    return 0;
}
image.gif

打开终端,输入gcc -o hello hello.c pkg-config --cflags --libs glib-2.0(注意:此处不是单引号,而是键盘左边数字键'1'左侧、Tab键上侧的[`]),千万别弄错哦!)

ccf@ccf-F81Se:~/WorkPlace/Glib库学习$ gcc -o hello hello.c `pkg-config --cflags --libs glib-2.0`
ccf@ccf-F81Se:~/WorkPlace/Glib库学习$ ls
dbus-glib示例说明.ppt  glib-2.34.3-docs    glib-notes.tar.gz    GLIB 库简介  ~  GmainLoop.c~  loop      Thread_Pools_glib.pdf
Event_loop.html        glib-2.34.3.tar.xz  Glib库的安装和编译?  gmain_demo.c~   hello         loop.c    理解pkg-config工具
glib-2.34.3            glib-notes          GLIB 库简介          GmainLoop.c     hello.c       makefile  理解pkg-config工具~
ccf@ccf-F81Se:~/WorkPlace/Glib库学习$ ./hello 
welcome to glib programming world!
ccf@ccf-F81Se:~/WorkPlace/Glib库学习$ 

image.gif

2、一个简单的gtk程序

/*
*File name: gtkbase.c
*/

//#include <gtk-2.0/gtk/gtk.h>
#include <gtk/gtk.h>
//#include <gtk.h> //使用此路径会编译失败,找不到头文件!

int main(int argc,char* argv[])
{
    GtkWidget *wnd;
    gtk_init(&argc,&argv);

    wnd=gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_widget_show(wnd);

    gtk_main();
    return 0;
}
image.gif

在终端编译敲如命令:gcc gtkbase.c -o gtkbase pkg-config --cflags --libs gtk+-2.0 gthread-2.0

ccf@ccf-F81Se:~/WorkPlace/gtk$ ls
GTK2.0 编译问题    gtkbase.c   makefile    threadloop.c
GTK2.0 编译问题 ~  gtkbase.c~  threadloop
ccf@ccf-F81Se:~/WorkPlace/gtk$ gcc gtkbase.c -o gtkbase `pkg-config --cflags --libs gtk+-2.0 gthread-2.0`
ccf@ccf-F81Se:~/WorkPlace/gtk$ ./gtkbase 

[图片上传中...(image-2427e9-1603718060970-1)]

为了简单起见,可以写一个简单的makefile文件,这样的话每次编译只需改动很少的部分就行了,在终端键入make或make clean就OK了。

#makefile for gtkbase
APP_NAME=gtkbase
CC=gcc
RM=-rm -f
LIBS=`pkg-config --cflags --libs gtk+-2.0 gthread-2.0`

$(APP_NAME):$(APP_NAME).c
    gcc $< -o $@ $(LIBS)

.PHNOY:clean
clean:
    $(RM) *.o $(APP_NAME)
image.gif

相关文章

  • pkg-config工具的使用

    一、 pkg-config简介 1、关于pkg-config工具下面这篇博客有个简单的介绍,链接如下: 理解 pk...

  • linux里的pkgconfig

    pkg-config是一个在源代码编译时查询已安装的库的使用接口的计算机工具软件。pkg-config原本是设计用...

  • pkg-config命令的Makefile.am

    举例:通过Makefile调用pkg-config命令。 (为了使用lib库,通过pkg-config生成必要的编...

  • (四)PKG-CONFIG补充

    一点补充,关于PKG-CONFIG的使用 pkg-config本身是一个linux下的命令,其功能是用于获得某一个...

  • 推流步骤

    安装 brew install pkg-config pkg-config --libs --cflags lib...

  • ffmpeg

    查询 使用库文件 pkg-config参考 音频互转 图像互转 视频互转 视频与图像

  • pkg-config与ffmpeg

    1.先说明前提 在windows平台下,使用MSYS+Mingw 编译ffmpeg 2.使用pkg-config编...

  • Linux安装和配置ffmpeg

    安装pkg-config工具 0.28版本直接下载pkg-config-0.28.tar.gz命令 wget ht...

  • pkg-config

    pkg-config安装比较简单,Debian apt-get install pkg-config Mac ...

  • CMAKE的使用(一)

    使用PKG-CONFIG 链接OpenCV的一个例子 测试平台:Linux,MacOSWindows上需要Cygw...

网友评论

    本文标题:pkg-config工具的使用

    本文链接:https://www.haomeiwen.com/subject/expzmktx.html