制作GDBGDBServer, arm-linux-gdb
1.可以使用crosstool,*.sh文件中加入--gdb选项将其编译出来
2.可以单独编译,网上也有很多资料:
引用blog.chinaunix/u1/34474/showart_361451.html 内容
今后我们编译程序的时候,就用arm-softfloat-linux-gnu-gcc 来编译我们的程序。
当然,应用程序的调试是开发过程中必不可少的环节之一。Linux下的GNU的调试器即是GDB。所以我们有了这个交叉编译工具链之后,可以用它来编译gdbgdbserver。如果你暂时不需要GDB的话,也可以先略过这一步。
GDB的编译安装
目前比较新的是版本是linux系统安装步骤csdnGDB6.6。其是/software/gdb/
下载gdb-6.源代码包到/usr/src下。
[root@localhost]tar –zxvf gdb-6.
[root@localhost]cd gdb-6.6
配置很简单,只需要指定目标板体系结构和安装路径即可。
[root@localhost]mkdir /opt/crosstool/gcc-3.4.1-glibc-2.3.3/arm-softfloat-linux-gnu/gdb6.6
[root@localhost]./configure  --target=arm-softfloat-linux-gnu  --prefix=/opt/crosstool/gcc-3.4.1-glibc-2.3.3/arm-softfloat-linux-gnu/gdb6.6 -v
[root@localhost]make
[root@localhost]make install
顺利的话,则在gdb6.6下生成新的目录,其中gdb工具就在bin目录下。
[root@localhost]ls –l /opt/crosstool/gcc-3.4.1-glibc-2.3.3/arm-softfloat-linux-gnu/gdb6.6
/bin
总用量 30476
-rwxr-xr-x    1 root    root    14335251 12 29 15:53 arm-softfloat-linux-gnu-gdb
-rwxr-xr-x    1 root    root    14335296 12 29 15:53 arm-softfloat-linux-gnu-gdbtui
-rwxr-xr-x    1 root    root      2489663 12 29 15:52 arm-softfloat-linux-gnu-run
同样在环境变量中添加gdb的路径
[root@localhost]export PATH=$PATH :/opt/crosstool/gcc-3.4.1-glibc-2.3.3/arm-softfloat-linux-gnu/gdb6.6/bin
今后调试程序的时候,用arm-softfloat-linux-gnu-gdb 来调试。
gdbserver的编译
[root@localhost]cd gdb-6.6
[root@localhost]cd gdb/gdbserver
[root@localhost] ./configure --target=arm-softfloat-linux-gnu –-host=arm-softfloat-linux-gnu
[root@localhost] make CC=/opt/crosstool/gcc-3.4.1-glibc-2.3.3/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc
如果不出错的话,将在当前目录下生成两个可执行文件:gdbservergdbreplay。以后就可以用gdb+gdbserver调试我们开发板上的程序了。至此,我们的交叉编译工具链已经基本建立。可以用来作为我们bootloader的编译环境了。
/*******************************************************
说说我遇到的问题:
1. ./configure --target=arm-softfloat-linux-gnu –-host=arm-softfloat-linux-gnu
我改为:./configure --target=arm-linux --prefix=/usr/local/arm/3.4.1/gdb6.6
我要求安装在/usr/local/arm/3.4.1/gdb6.6目录下,host表示是arm-linux主机
2. 在编译时遇到错误:/usr/local/arm/3.4.1/bin/arm-linux-gcc -c -Wall -g -O2    -I. -I. -I./../regformats -I./../../include -I../../bfd -I./../../bfd linux-arm-low.c
linux-arm-low.c:35:21: sys/reg.h: No such file or directory
因为sys/reg.hRedhat /usr/include/sys/reg.h目录中,所以可以加上 -I/usr/include
然后单独运行:/usr/local/arm/3.4.1/bin/arm-linux-gcc -c -Wall -g -O2    -I. -I. -I./../regformats -I./../../include -I../../bfd -I./../../bfd -I/usr/include linux-arm-low.c
OK!!!!!
3.然后运行 make CC=/usr/........(arm-linux-gcc的绝对位置)
4.然后运行make install
在我定义的prefix (/usr/local/arm/3.4.1/gdb6.6)下,在bin/下有一个arm-linux-gdbserver      哈哈,爽!!!!
GDB+GDBServer的使用
在目标系统上启动gdbserver,其实就是在超级终端下或者minicom下启动gdbserver。这里将gdbserver放在宿主机的NFS设置的共享目录下/home/zzl,该目录挂载在目标板/work下。宿主机的ip192.168.1.1,目标板的ip192.168.1.33
超级终端或者minicom
[root@localhost]cd /work
[root@localhost]./gdbserver 192.168.1.1:1234 hello
出现提示:
Process /work/hello created: pid=69
Listening on port 1234
这时切换到宿主机的控制台,运行
[root@localhost] arm-softfloat-linux-gnu-gdb hello
(gdb) target remote 192.168.2.33:1234
出现提示:
Remote debugging using 192.168.1.33:1234
[New thread 80]
[Switching to thread 80]
0x40002a90 in ??()
同时在minicom下提示:
Remote debugging from host 192.168.2.100
(gdb)
连接成功,这时候就可以输入各种gdb命令如listcontinuenextstepbreak等进行程序调试了。
/*******************************************************
1. gdbserver或者arm-linux-gdbserver ftp到开发板上,使之可以运行。
2. 开发板上的hello文件可能是运行arm-linux-strip命令后的文件,size很小,在Linux主机上不能用strip命令生成的hello文件,使用原始的hello文件。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。