arm-gdb移植(编译)

来源:互联网 发布:在vb集成开发环境中 编辑:程序博客网 时间:2024/04/30 20:44

调试应用程序的时候最好有调试工具类似于PC机上的GDB和DDD。写这篇文章的原因也是想要调试应用程序,所以决心自己作一次开发板上GDB的移植。

网上相关的文档很多。也很精辟,在这里做一个汇总,以备后用。

 

GDB移植:

GDB移植其实分为两种,两种方法的的区分是鉴于使用和编译后的工具而言。

1,第一种是 开发板上使用ARM版的GDB,就像PC机上使用GDB。

2,第二种是 开发板上使用ARM版的GDB Client,PC机上使用PC版本GDB Server。两者通过网络来交互信息实现调试。

 

不管哪种方式来调试,首先要做的总是要实现编译工具。网上很多的资料其实都介绍了如何编译GDB,以及在编译过程中遇到的问题。

 

本文主要介绍第一种GDB的编译以及调试的方法。 

OS          :UBUNTU 10.04

CrossTools  :arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.tar

 

编译:

1,下载termcap-1.3.1.tar.gz

网上可以搜索到这个压缩包的位置,在ftp://ftp.gnu.org/gnu/termcap/

可以使用IE登录一下发现这个文件还真是很久以前的。

03/13/2002 12:00ÉÏÎç        439,416 termcap-1.3.1.tar.gz

08/17/1995 12:00ÉÏÎç        288,760 termcap-1.3.tar.gz

 

这里使用wget命令:

wget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz

 

2,下载gdb-7.5.tar.bz2

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

gdb-7.5.tar.bz2         17-Aug-2012 13:58   20M 

 

3,编译

(1)编译termcap如果没有这个lib,如果没有这个libtermcap.a则在编译gdb时候会报错:

make[1]: *** [configure-gdb] Error 1

configure: error: no termcap library foundmake[1]: *** [configure-gdb] Error 1

 

解压termcap包,进入termcap包以后使用/configure命令:

./configure --target=arm-none-linux-gnueabi --prefix=/opt/termcap

make & make install

 

第一次编译的时候没有注意Makefile中的内容,在config之后发现了gcc还是gcc没有变为

arm-none-linux-gnueabi-gcc

arm-none-linux-gnueabi-ar

arm-none-linux-gnueabi-ranlib

之后第二次编译时候,手动修改Makefile后,再编译。prefix路径中有了lib include info等文件夹。在lib文件夹中得到了编译的libtermcap.a文件。

 

有了这个a文件后copy这个文件到交叉编译的工具使用的lib中。网上介绍了一些XXXXXXX-linux-gcc -print-file-name libc.a。在2009的交叉编译工具上使用后发现失败。

应该arm-none-linux-gnueabi-gcc -print-file-name=libc.a。在=后面直接加上绝对路径。这个路径可以使用find –name libc.a

发现在三个文件路劲下都有这个文件:

arm-none-linux-gnueabi/libc/armv4t/usr/lib/

arm-none-linux-gnueabi/libc/usr/lib/

arm-none-linux-gnueabi/libc/thumb2/usr/lib/

把编译好的libtermcap.a分别拷贝到以上三个路径中。不知道交叉的编译器到底是使用的那个lib,顾全部拷贝一次。

 

2)编译gdb,在编译gdb时候关键是configure的配置脚本。

网上可以查到很多资料

--enable-shared     动态编译

--host=                 arm-none-linux-gnueabi-gcc编译

--prefix=              安装目录

--without-x           取消x windows支持

--disable-gdbtk      取消gdbtk,应该也是图形界面相关的

--disable-tui          取消tui界面

--without-included-regex      关闭正则表达式库

--without-included-gettext    去掉用于多语言处理的 gettext库正则表达式/gettext,暂时不需要,先去掉

 

./configure --host=arm-none-linux-gnueabi --enable-shared --prefix=/output/arm --without-x --disable-gdbtk --disable-tui --without-included-regex --without-included-gettext LDFLAGS="=L /opt/ termcap/lib"

CPPFLAGS="-I /opt/ termcap/include"

LDFLAGS CPPFLAGS可以不要,应为在交叉编译使用的lib中已经包含了libtermcap库。

随后make & make install,在prefix制定的目录下可以找到想要的文件以及文件夹:

Bin include lib share

 

编译结束,等待上板子调试。

原创粉丝点击