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拷贝到开发板上即可运行,象x86的GDB一样运行即可

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

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

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

这些那些,我们是多么的了然于心,却依然,没有任何办法。

GDB移植_ARM_LINXU

相关文章:

你感兴趣的文章:

标签云: