万剑归宗是无名的招数,但是它却道出一个道理。不管剑招多么花哨,多么厉害,最终还是需要回归正宗与朴实。程序也是一样,不管代码如何实现,不论语言如何,技巧如何,最终也是要能够被正确,有效,可靠的运行,才是本真。所以我们需要耐心的去了解与分析程序的运行过程,能够去调试之,验证自己程序的性能。
当然有些其他的知识技巧被总结于此。以下从5个方面做出介绍(参考文档到我的资源中下载即可):
一)自动获取编译路径的工具:pkg-config介绍
功能介绍:
自动配置编译与链接路径,在编译时需要引入别人已经编译好的库与头文件(-I,-L,-l参数)的自动配置,一般在configue时自动生成。
使用说明:
1)编译时的参数(以zlib为例): pkg-config --cflags zlib
输出为-I/home/yiye/yiye_run/include
2)链接时的参数:pkg-config --libs zlib
输出为:-L/home/yiye/yiye_run/lib -lz
3)直接编译使用zlib的程序:gcc zlib-program.c $(pkg-config –cflags --libs zlib ).
4)查询有哪些库可以被找到:pkg-config –list-all
5)查询程序库版本:pkg-config –modversion zlib
输出为1.2.8
实现原理:
遍历搜索路径下的所有*.pc文件,然后输出相关信息;默认的搜索路径:
/usr/lib/pkgconfig, /usr/share/pkgconfig, /usr/local/lib/pkgconfig and /usr/local/share/pkg‐
config;客制化路径,修改环境变量,可以PKG_CONFIG_PATH。
简单分析*.pc文件(以zlib.pc为例):
[yiye@yiye pkgconfig]$ cat zlib.pc
prefix=/home/yiye/yiye_run-----------configue时的prefix路径,以下为定义的相关变量
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
sharedlibdir=${libdir}
includedir=${prefix}/include
Name: zlib-------------库的名称
Description: zlib compression library---------功能描述
Version: 1.2.8---------------版本信息
Requires:
Libs: -L${libdir} -L${sharedlibdir} -lz-----------链接参数
Cflags: -I${includedir}---------------编译参数
深入了解:
pkg-config –help/man pkg-config