代码才是最叼的
全部博文(86)
分类: 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多;
编译结束,等待上板子调试。