gdbserver太麻烦了,不好用还是直接在板子上编个gdb用吧
1. 编译termcap
交叉编译gdb6.6需要库termcap,这个在交叉工具链里面没有,需要先移植一个,否则会出现: configure: error: no termcap library found
1.1 下载 termcap-1.3.1.tar.gz, 解压
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
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目录下就可以直接调试程序了。
[参考文章]