Linux下交叉编译gdb和gdbserver


 

 平台:tq2440

 GCC:  gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176)

 

 这里过程中参考了下面两篇博文:

http://blog.csdn.net/hejianhua/article/details/7254836

http://blog.csdn.net/fly_qj/article/details/8272555

 

1、下载gdb


下载地址为:http://ftp.gnu.org/gnu/gdb/

我们以gdb-7.9.tar.xz 这个文件为例。

2、安装软件包

  • textinfo

否则会提示makeinfo找不到。

安装方法:

sudo apt-get install textinfo

 

  • libncurses5-dev

否则会出现如下错误:

configure: WARNING: no enhanced curses library found; disabling TUI checking for library containing tgetent... no configure: error: no termcap library found make[1]: *** [configure-gdb] Error 1

 

安装方法:

解决这个问题需要自己去新下载一套ncurses的最新代码,重新交叉编译出来,再拷到交叉gcc的库默认搜索路径下去就能解决。 wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.8.tar.gz

tar xvf ncurses-5.8.tar.gz cd ncurses-5.8 ./configure --prefix=/root/work/tq2440/tools/gdb/ncurses-5.8/bin --host=arm-linux CC=arm-linux-gcc

make&&make install cd bin cp -rf lib/*/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/usr/lib/ cp -rf include/* /opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/usr/include

 

3、编译安装gdb和gdbserver

  • 目录结构
. ├── gdb # 存放编译产生的arm-linux-gdb可执行程序 ├── gdb-7.9 # gdb和gdbserver的源码目录 ├── gdb-7.9.tar.xz ├── gdb_build # 编译gdb时的中间编译文件 ├── gdbserver # 存放编译生成的arm-linux-gdbserver可执行程序 ├── gdbserver_build # 存放编译gdbserver时的编译结果 ├── ncurses-5.8 └── ncurses-5.8.tar.gz

 

  • 编译安装gdb
cd gdb_build ../gdb-7.9/configure --target=arm-linux --program-prefix=arm-linux- --prefix=/root/work/tq2440/tools/gdb/gdb make
make install

:--target=arm-linux意思是说目标平台是运行于ARM体系结构的linux内核;--program-prefix=arm-linux-是指生成的可执行文件的前缀,比如arm-linux-gdb,--prefix是指生成的可执行文件安装在哪个目录,这个目录需要根据实际情况作选择。如果该目录不存在,会自动创建,当然,权限足够的话。

 

生成的可执行程序存放在/root/work/tq2440/tools/gdb/gdb下:

gdb ├── bin │   ├── arm-linux-gdb │   └── arm-linux-run ├── include │   └── gdb ├── lib │   └── libarm-linux-sim.a └── share ├── gdb ├── info ├── locale └── man

可以对生成的arm-linux-gdb进行strip

strip arm-linux-gdb -o arm-linux-gdb-stripped

 

  • 编译安装gdbserver
cd gdbserver_build ../gdb-7.9/gdb/configure --target=arm-linux --host=arm-linux --prefix=/root/work/tq2440/tools/gdb/gdbserver cd gdbserver make
make install


最后生成的可执行程序存放在/root/work/tq2440/tools/gdb/gdbserver目录下

gdbserver └── bin └── arm-linux-gdbserver

可以对arm-linux-gdbserver进行strip

 arm-linux-strip gdbserver -o gdbserver-stripped

注意,这里必须使用strip的交叉版本,也就是arm-linux-strip

 

到此,我们生成了两个重量级别的文件:arm-linux-gdbgdbserver。它们的版本是一致的,这一点非常重要。我们需要将gdbserver下载到开发板中,——可以通过各种各样的手段,包括但不限于NFS。调试时需要在开发板中运行这个程序。同时在主机中执行arm-linux-gdb调试器。

 

下面是我编译出的arm-linux-gdbserver和arm-linux-gdb,可以用于tq2440远程调试:

http://files.cnblogs.com/files/pengdonglin137/tq2440_arm-linux-gdb%26arm-linux-gdbserver.7z

 

 完。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM