GDB移植_ARM_LINXU

GDB移植_ARM_LINXU

 

环境:

    硬件:s3c2440(友善micro2440)

    开发板上内核:linux-2.6.32.2

    交叉编译工具:arm-linux-gcc-4.3.2(开发板自带。可以考虑用4.3.3的)

    PC机器Linux系统:RedHat9

    PC机编译环境:gcc3.3.2

    gdb版本:gdb-6.8

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

    ncurse的支持:ncurse 5.6

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

   

参考文章:

http://wenku.baidu.com/view/a34ee5c7aa00b52acfc7ca87.html

       http://blog.csdn.net/luckyhzh/archive/2010/07/26/5766927.aspx

       http://wenku.baidu.com/view/ac86ac7101f69e3143329484.html

 

    1. gdb的移植

ARM本地版需要ncurse的支持。

    1.1 ncurse库的移植

Ø        解压 tar zxvf ncurses-5.6.tar.gz -C /  (这里我是解压到根目录下)

Ø        cd /ncurses-5.6

Ø        生成makefile

n        ./configure --host=arm-linux --prefix=/home/bin --without-ada --enable-termcap --with-shared

Ø        其中--enable-termcap比较关键gdb需要这个库

l        编译 make

l        安装 make install

l        libncurses.so 库应该在/home/bin/lib

 

 1.2 gdb的编译

Ø         解压 tar zxvf gdb-6.8.tar.gz –C /

Ø        cd /gdb-6.8

Ø        生成Makefile

n        ./configure --host=arm-linux --enable-shared --prefix=/home/bin   --without-x --disable-gdbtk --disable-tui --without-included-regex --without-included-gettext LDFLAGS=/home/bin /lib CPPFLAGS=/home/bin/include

Ø        --enable-shared    动态编译

Ø        --host=arm-linux  arm-linux-gcc编译

Ø        --prefix="$PWD/../output/arm-linux" 安装目录

Ø        --without-x     取消x windows 支持

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

Ø        --disable-tui   取消tui 界面

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

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

Ø        CPPFLAGS/LDFLAGS是确保能找到ARM版的ncurses

l        编译 make

1)       如果gdb 6.7有一个警告会当成bug处理symtab.c: In function 'find_line_symtab':
symtab.c:2252: error: 'exact' may be used uninitialized in this function

2)       只要简单把int exact;变成int exact =0 ; 即可编译通过

3)       Make过程中提示error ,“/gdb-6.8/dfb/bfd.h”,我用find命令查找了下,发现系统中(“/usr/include/bfd.h”)和另一个交叉编译工具中(“/usr/local/arm/2.95.3/include/bfd.h”)都有这个文件,我拷贝了另一个交叉编译工具中的”bfd.h”(“cp /usr/local/arm/2.95.3/include/bfd.h /gdb-6.8/bfd/“)

l        安装 make install

1)      最终的arm的程序gdb应该在home /bin下面,将其拷贝和libncurses.so拷贝到开发板上即可运行,象x86GDB一样运行即可

2)      注意这个样编译能同时把ARMgdbserver 也同时编译出来并在安装目录看到.而且一般eabigcc编译器都自带了arm-linux-gdb.所以交叉版本的gdb移植很多时候可以省略.

3)      Make install后到/home/bin/找到gdbserver,拷贝到开发板子上,可以使用了。哦呵呵。

刚刚编译出来的gdb尺寸相当大,10M,因此必须要用arm-linux-strip gdb 来把尺寸减少.strip后大约2M(这步我没做,个人认为用不到,我主要用gdbserver,至于arm-linux-gdb我的交叉编译工具中有现成的)

 

你可能感兴趣的:(gdb调试)