C 通过 pkg-config 编译

当编译 C 语言程序链接了其它第三方组件的时候需要添加额外的编译参数,有的时候编译参数会比较长,难以记忆和书写,因此有了 pkg-config,pkg-config 是一个命令行工具,它能够读取软件安装目录中的 .pc 文件,可以通过 dpkg -L software 来查看安装目录,.pc 文件的内容(以 libcork为例):

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib/x86_64-linux-gnu
includedir=${prefix}/include
sharedir=${prefix}/share
sphinxdir=${sharedir}/doc/libcork-doc/html

Name: libcork
Description: A simple, easily embeddable cross-platform C library
Version: 0.15.0+ds-12
URL: https://github.com/redjack/libcork
Libs: -L${libdir} -lcork
Libs.private: -lpthread
Cflags: -I${includedir}

因此可以通过:pkg-config --cflags --libs libcork 来获取编译参数,例如 libpng 就可以用: pkg-config --cflags --libs libpng, 输出为:

-I/usr/include/libpng16 -lpng16 -lz

在编译程序的时候就可以使用:

clang main.c `pkg-config --cflags --libs libcork` -o app

而且支持多个库:

pkg-config --cflags --libs libcork libpng