在linux下调试静态库

转载注明出处:http://blog.sina.com.cn/s/blog_61bc01360102vu0i.html

我自己在PC上写了一个小程序进行验证,发现果然是这样。如果把全部.o文件(用-ggdb3选项编译,带调试信息)直接编译成可执行文件,是可以跟踪进入.o文件对应的源文件的;如果先把其中几个.o文件用ar命令打包成静态库,再和主程序的.o文件一起编译成可执行文件,gdb就跟踪不进去了。

      观察了一下.a文件和.o文件的大小,我发现.a文件的体积远远小于全部.o文件的总和,看来是在打包的过程中把调试信息弄丢了。上网查了一下,发现只要使用-s(小写s,不是大写S)选项,就可以在.a文件中保留符号信息。

      于是先修改$OCTEON_ROOT/components/crypto-api/core/crypto.mk文件的第22行,将“CFLAGS_CRYPTO += -O2”改为“CFLAGS_CRYPTO += -ggdb3”,再修改$OCTEON_ROOT/components/crypto-api/core/crypto/crypto.mk文件的第146行,将“$(AR) -r $@ $^”改为“$(AR) -rs $@ $^”,接着进入$OCTEON_ROOT/components/crypto-api/core/test-api目录进行编译,就可以得到新的libcrypto.a(体积比原先膨胀了几十倍,超过了100M),最后在Eclipse中添加源文件搜索路径($OCTEON_ROOT/components/crypto-api/core,包含子目录),gdb就能正确跟踪进入libcrypto.a对应的源文件了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值