|
交叉编译工具是官方提供的。gdb可以按以下的方法:
#tar jxvf gdb-6.6-tar-bz2
#cd gdb-6.6
#./configure --target=arm-none-linux-guneabi --prefix=/home/myzr/test/gdb/arm-gdb -v
#make
执行到此步之后我出现了如下的错误
cc1: warnings being treated as errors
/root/tools/gdb-6.6/bfd/elf32-arm.c: In function 'find_thumb_glue':
/root/tools/gdb-6.6/bfd/elf32-arm.c:2452: error: ignoring return value of 'asprintf', declared with attribute warn_unused_result
/root/tools/gdb-6.6/bfd/elf32-arm.c: In function 'find_arm_glue':
/root/tools/gdb-6.6/bfd/elf32-arm.c:2485: error: ignoring return value of 'asprintf', declared with attribute warn_unused_result
这个由于返回值没有被接收 导致编译中断 这是因为makefile中加入了-Werror导致将警告当成了错误
将下列文件中的-Werror选项删除后保存即可重新编译成功
bfd/Makefile:185:WARN_CFLAGS = -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror
opcodes/Makefile:175:WARN_CFLAGS = -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror
接下来执行:
#make install
#export PATH=$PATH:/home/myzr/test/gdb/arm-gdb
进入gdbserver目录(在gdb目录下):
#./configure --target=arm-none-linux-guneabi --host=arm-none-linux-guneabi
#make CC=arm-none-linux-guneabi-gcc
最后把gdbserver复制到/home/myzr/nfsroot
安装必要的库libthread_db-1.0.so
如果你的嵌入式linux没有安装libthread_db-1.0.so这个库的话,在板子中运行gdbserver会提示错误。解决方法如下:
将你的arm-linux-gcc的交叉编译环境中的/usr/local/arm/3.4.1/arm-linux/lib下的libthread_db-1.0.so文件拷贝到开发板的根目录下的/lib中去(可以先放入nfs共享文件夹中然后再在串口终端中输入拷贝命令)。并在/lib目录建立一个一个指向libthread_db-1.0.so的软链接libthread_db.so.1。
命令如下:#ln -s libthread_db-1.0.so libthread_db.so.1
mount -t nfs 192.168.3.111:/home/myzr/nfsroot nfs/ -o nolock(挂载主机的文件夹到nfs)
#cd /nfs
#./gdbserver 192.168.3.111:2345 hello(在板子的串口终端上运行)
显示:
Process hello created; pid = 3206
Listening on port 2345
Remote debugging from host 192.168.3.111
#cd /home/myzr/nfsroot (我在这个文件夹下面放解压后的文件系统)
#arm-none-linux-guneabi-gdb hello(在ubuntu下面运行)
(gdb) set solib-absolute-prefix /home/myzr/nfsroot
(gdb) set solib-search-path /home/myzr/nfsroot/lib
(gdb) target remote 192.168.3.108:2345
就可以开始调试了 |
|