远程调试工具arm-linux-gdb的移植:
因为编译gdb的时候要用到ncurses的lib,所以要先编译出ncurses的lib库,而这个库又要用到gmp的Lib,所以需要以下三个包:
gmp-4.2.1.tar.gz,ncurses-5.2.tar.gz,gdb6.4.tar.gz
(1)安装gmp-4.2.1.tar.gz
tar zxvf gmp-4.2.1.tar.gz
./configure --host=arm-linux --prefix=/opt/arm-gmp
make CC=arm-linux-gcc LD=arm-linux-ld AS=arm-linux-as NM=arm-linux-nm STRIP=arm-linux-strip OBJCPY=arm-linux-objcopy
make isntall
(2)安装ncurses-5.2.tar.gz
(3)安装gdb6.4.tar.gz
这个过程中学到了:
(1).grep命令的使用,-r(递归) –n(打印行号)
grep "no termcap library found" * -rn,编译时会出错,然后通过这个命令查找configure文件打印这个信息的行号然后加以改正:或注释或修改.
(2).生成core文件之前需要执行的命令.(生成core文件之前需要将本来应该traip的文件的traip动作关掉,因为这样才能有程序的符号表也就才能有真的gdb的结果.)
ulimit -c 2000
(3).修改的./gdb/configure的脚本文件.
gdb/configure
#if test "$ac_cv_search_tgetent" = no; then
# { { echo "$as_me:$LINENO: error: no termcap library found" >&5
#echo "$as_me: error: no termcap library found" >&2;}
# { (exit 1); exit 1; }; }
#fi
tar zxvf gdb6.4.tar.gz
./configure --host=arm-linux --prefix=/opt/arm-gdb --target=arm-linux --build=i686-linux
make CC=arm-linux-gcc,这个步骤可能会出现问题,看下面的解决办法。
下面语句是因为没有配置好ncurses,手动加上的ncurses库,
arm-linux-gcc -g -o2 -o gdb gdb.o libgdb.a ../readline/libreadline.a ../opcodes/libopcodes.a ../bdf/libbfd.a ../libliberty/libiberty.a
tar zxvf ncurses-5.2.tar.gz
./configure --host=arm-linux --prefix=/opt/arm-ncurses
make CC=arm-linux-gcc LD=arm-linux-ld AS=arm-linux-as NM=arm-linux-nm STRIP=arm-linux-strip OBJCPY=arm-linux-objcopy
make isntall