移植gdb6.6到arm平台

来源:互联网 发布:矩阵防御安卓 编辑:程序博客网 时间:2024/06/05 19:11
gdbserver太麻烦了,不好用还是直接在板子上编个gdb用吧

1. 编译termcap
交叉编译gdb6.6需要库termcap,这个在交叉工具链里面没有,需要先移植一个,否则会出现: configure: error: no termcap library found
1.1 下载 termcap-1.3.1.tar.gz, 解压 (可以到我的网盘下载:http://pan.baidu.com/s/1mgHqUlq)
1.2 ./configure --target=arm-linux --prefix=/opt/termcap,生成Makefile之后,修改一下工具链:
    CC = /opt/forlinux/4.3.2/bin/arm-none-linux-gnueabi-gcc 
     AR = /opt/forlinux/4.3.2/bin/arm-none-linux-gnueabi-ar
     RANLIB = /opt/forlinux/4.3.2/bin/arm-none-linux-gnueabi-ranlib
1.3 make && make install
1.4 复制编译好的termcap到交叉工具链的位置上去
不知道 交叉工具链在config时去搜索哪个路径怎么办?
交叉编译安装完成后必须要将这个库放在交叉编译工具gcc(我的是mipsel-linux-gcc)的默认搜索库目录下。到你的交叉编译工具目录下,怎样查看默认搜索库的目录在哪里呢,执行下面的命令:

XXXXXXX-linux-gcc --print-file-name libc.a

就会显示出交叉编译工具所使用的库的默认搜索目录了。
root@ubuntu:~/gdb/termcap-1.3.1#/opt/forlinux/4.3.2/bin/arm-none-linux-gnueabi-gcc --print-file-name libc.a
/opt/forlinux/4.3.2/bin/../arm-none-linux-gnueabi/libc/usr/lib/libc.a
root@ubuntu:~/xeyez/gdb/termcap-1.3.1# cp  /opt/termcap/libtermcap.a  /opt/forlinux/4.3.2/bin/../arm-none-linux-gnueabi/libc/usr/lib/

2. 交叉编译gdb-6.6(可以到我的网盘下载:http://pan.baidu.com/s/1hq3lQS0)
CC=/opt/forlinux/4.3.2/bin/arm-none-linux-gnueabi-gcc AR=/opt/forlinux/4.3.2/bin/arm-none-linux-gnueabi-ar RANLIB=/opt/forlinux/4.3.2/bin/arm-none-linux-gnueabi-ranlib LD=/opt/forlinux/4.3.2/bin/arm-none-linux-gnueabi-ld ./configure --build=i686-linux --host=arm-linux --prefix=/opt/arm-gdb
make && make install

3. strip一下,减小gdb体积
root@ubuntu:/opt/arm-gdb/bin# ll gdb
-rwxr-xr-x 1 root root 10703951 2012-08-20 10:30 gdb*
root@ubuntu:/opt/arm-gdb/bin# /opt/forlinux/4.3.2/bin/arm-none-linux-gnueabi-strip ./gdb
root@ubuntu:/opt/arm-gdb/bin# ll -h gdb
-rwxr-xr-x 1 root root 2.4M 2012-08-20 10:47 gdb*
strip之前gdb大约有11M,strip之后是2.4M,拷到开发板的/bin目录下就可以直接调试程序了。

[参考文章]http://www.linuxidc.com/Linux/2012-08/68272.htm
(原文链接:http://blog.chinaunix.net/uid-26009923-id-3319177.html)

补充:
gdbserver有个问题,当嵌入式设备的网络断开时,程序会停止,网络好后继续运行,所以不能用gdbserver调试网络断开的情况。
0 0
原创粉丝点击