0%

pkg-config 自动解决依赖

简介

pkg-config 主要解决软件库的依赖问题,特别是在不同的平台,安装的软件目录不同的情况下,可以很优雅地解决。这一切都是自动的,不用担心库文件放在什么地方。

1
pkg-config - Return metainformation about installed libraries

比如对于同样安装了gtk的系统而言,使用下来命令

1
pkg-config --libs --cflags gtk+-2.0

MacOSX输出为:

1
-D_REENTRANT -I/usr/local/Cellar/gtk+/2.24.31_1/include/gtk-2.0 -I/usr/local/Cellar/gtk+/2.24.31_1/lib/gtk-2.0/include -I/usr/local/Cellar/pango/1.40.14/include/pango-1.0 -I/usr/local/Cellar/harfbuzz/1.7.5/include/harfbuzz -I/usr/local/Cellar/graphite2/1.3.10/include -I/usr/local/Cellar/pango/1.40.14/include/pango-1.0 -I/usr/local/Cellar/atk/2.26.1/include/atk-1.0 -I/usr/local/Cellar/cairo/1.14.12/include/cairo -I/usr/local/Cellar/pixman/0.34.0_1/include/pixman-1 -I/usr/local/Cellar/fontconfig/2.12.6/include -I/usr/local/opt/freetype/include/freetype2 -I/usr/local/Cellar/libpng/1.6.34/include/libpng16 -I/usr/local/Cellar/gdk-pixbuf/2.36.11/include/gdk-pixbuf-2.0 -I/usr/local/Cellar/libpng/1.6.34/include/libpng16 -I/usr/local/Cellar/glib/2.54.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.54.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.41/include -L/usr/local/Cellar/gtk+/2.24.31_1/lib -L/usr/local/Cellar/pango/1.40.14/lib -L/usr/local/Cellar/atk/2.26.1/lib -L/usr/local/Cellar/cairo/1.14.12/lib -L/usr/local/Cellar/gdk-pixbuf/2.36.11/lib -L/usr/local/Cellar/glib/2.54.3/lib -L/usr/local/opt/gettext/lib -lgtk-quartz-2.0 -lgdk-quartz-2.0 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl -Wl,-framework -Wl,CoreFoundation

CentOS输出为:

1
-pthread -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/libpng15 -I/usr/include/libdrm  -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lglib-2.0 -lfreetype

可以看出还是有很大差别的,所以对于下面的示例程序:

1
2
3
4
```

编译的时候,直接使用下面的命令即可,而不用关注操作系统。

gcc -o test main.c pkg-config --libs --cflags gtk+-2.0


处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道