Chinaunix首页 | 论坛 | 博客
  • 博客访问: 318326
  • 博文数量: 86
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 185
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-25 17:14
个人简介

代码才是最叼的

文章分类

全部博文(86)

文章存档

2019年(1)

2018年(1)

2017年(9)

2016年(19)

2015年(55)

2014年(1)

分类: LINUX

2017-03-10 19:01:44

调试应用程序的时候最好有调试工具gdb调试,最新在做一个嵌入式设备,调试代码移植了GDB,故写此文留给需要的人

网上相关的文档很多。移植,因个人环境不一致,可能出现的现象不一致,仅供参考;

GDB移植:

GDB移植分为两种,两种方法的的区分是鉴于使用和编译后的工具而言。

1,第一种是 开发板上使用ARM版的GDB,就像PC机上使用GDB。

2,第二种是 开发板上使用ARM版的GDB Client,PC机上使用PC版本GDB Server。两者通过网络来交互信息实现调试。

 本人使用过第一种,也就移植的此篇文章,第二种没有移植过(网上大部分说的第二种); 

编译:

1,下载termcap-1.3.1.tar.gz

编译: 
使用的是arm交叉工具链
./configure --host=arm-linux --prefix=/home/work/work_soc/gdb/termcap/install
make  CC=/opt/ti-ebgcc/ti-gcc/bin/armeb-linux-gnueabihf-gcc AR=/opt/ti-ebgcc/ti-gcc/bin/armeb-linux-gnueabihf-ar
make install

主要生成libtermcap.a库,编译gdb时需要连接这个库;

2,下载一开始使用gdb-7.6.x版本编译出现问题,差了很久网上说源码有bug,最后下载7.8.x版本;

arm-none-linux-gnueabi/libc/armv4t/usr/lib/

arm-none-linux-gnueabi/libc/usr/lib/

arm-none-linux-gnueabi/libc/thumb2/usr/lib/

把编译好的libtermcap.a分别拷贝到以上三个路径中。不知道交叉的编译器到底是使用的那个lib,顾全部拷贝一次。

 编译gdb,在编译gdb时候关键是configure的配置脚本。

网上可以查到很多资料

--enable-shared     动态编译

--host=                 arm-none-linux-gnueabi-gcc编译

--prefix=              安装目录

--without-x           取消x windows 支持

--disable-gdbtk      取消gdbtk,应该也是图形界面相关的

--disable-tui          取消tui 界面

--without-included-regex      关闭正则表达式库

--without-included-gettext    去掉用于多语言处理的 gettext库正则表达式/gettext,暂时不需要,先去掉

 

./configure --host=arm-none-linux-gnueabi --enable-shared --prefix=/output/arm --without-x --disable-gdbtk --disable-tui --without-included-regex --without-included-gettext LDFLAGS="=L /opt/ termcap/lib"

CPPFLAGS="-I /opt/ termcap/include"

LDFLAGS  CPPFLAGS可以不要,应为在交叉编译使用的lib中已经包含了libtermcap库。

随后make & make install,在prefix制定的目录下可以找到想要的文件以及文件夹:

Bin include lib share

 当时编译完后gdb放到单板上跑不起来,在gdb目录修改makefile (增加CC_LD=$(CC) -static),之后,将gdb拷贝到单板上修改权限就可以执行;


arm-linux-strip gdb -stripped  可以将20M的gdb减小到3M多; 

编译结束,等待上板子调试。

阅读(2404) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~