万变不离其宗——程序动态分析(gdb)



    万剑归宗是无名的招数,但是它却道出一个道理。不管剑招多么花哨,多么厉害,最终还是需要回归正宗与朴实。程序也是一样,不管代码如何实现,不论语言如何,技巧如何,最终也是要能够被正确,有效,可靠的运行,才是本真。所以我们需要耐心的去了解与分析程序的运行过程,能够去调试之,验证自己程序的性能。

当然有些其他的知识技巧被总结于此。以下从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


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值