在Linux环境下调试静态库
来源:互联网 发布:淘宝直通车如何收费 编辑:程序博客网 时间:2024/05/21 09:24
这两天同事在Octeon开发板上调试Linux程序,遇到了一个问题:无法让gdb单步跟踪进入静态库(libcrypto.a和libcvmx.a)对应的源文件。
我自己在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对应的源文件了。
对于libcvmx.a应该也可以进行类似的处理,不过估计体积会超过300M了,有兴趣的读者可以尝试一下。
- 在Linux环境下调试静态库
- 在linux下调试静态库
- 在linux环境下静态库的创建过程
- 在LINUX环境下静态库的创建于使用方法
- 在linux环境下如何调试live555
- 在linux环境下调试总结
- LINUX下静态库的调试
- 在Linux环境下编写和使用静态函数库
- 在Linux环境下编写和使用静态函数库
- 在Fedora22环境下编译调试linux 0.12
- HBase 在linux环境下本地编译及调试
- 静态库与动态库的区别以及优缺点,在linux环境下配置静态库与动态库
- Linux环境下程序调试
- 在MInGW环境下编译和使用libcurl静态库
- 在windows环境下远程调试linux环境的php代码
- Linux环境下创建静态库和动态库
- Linux开发环境下的动态库和静态库
- Linux开发环境下的动态库和静态库
- ipv6的相关资料
- wince binfs 的实现 来自ARM-CE
- Linux环境进程间通信(一)
- 关于Qt 中update()和repaint()的区别
- ibatis配置文件中循环标记
- 在Linux环境下调试静态库
- Zen Cart 程序站内优化解决方案
- Ext综合应用1--登陆篇
- css选择器
- 使用单个innodb表,实现锁,防止游戏被刷物品或者其它资源!
- WebBrowse组件打印技术
- 数据连接字符
- MC55使用Unimodem进行GPRS拨号总结
- which 命令的用法