调试工具GDB构建
对于嵌入式GDB而已,分为两种,这两种方法的的区分是鉴于使用和编译后的工具而言。
- 第一种是开发板上使用的GDB,就像PC机上Linux系统使用GDB一样。
- 第二种是开发板上使用单板的GDB Client,PC机上使用PC版本GDB Server。两者通过网络来交互信息实现调试。
我们这里介绍第一种,主要介绍第一种gdb的构建方法:
-
下载gdb源码,路径为:http://ftp.gnu.org/gnu/gdb/
-
添加交叉编译工具链到环境变量,即交叉编译链所在路径加到环境变量中,例如
export PATH=/opt/freescale/usr/local/gcc-4.1.78-eglibc-2.5.78-dp-1/powerpc-linux-gnuspe/bin:/opt/freescale/usr/local/gcc-4.1.78-eglibc-2.5.78-dp-1/powerpc-linux-gnuspe/powerpc-linux-gnuspe/bin:$PATH
-
进入gdb目录执行
./configure--host=powerpc-linux-gnuspe --enable-shared --prefix=/home/gdb CC=powerpc-linux-gnuspe-gcc
其中:
- –enable-shared 动态编译
- –host= 用powerpc-linux-gnuspe-gcc编译,注意该选项不是任意自己定,而是根据交叉编译链的名字取其前缀,如笔者MPC8548交叉编译链名称为powerpc-linux-gnuspe-gcc则host定义为powerpc-linux-gnuspe
- –prefix= 安装目录
- cc 表示gcc文件名
-
configure完成以后会生成Makefile,然后执行make完成编译,然后执行make install后会在prefix指定的目录生成gdb
-
如果编译报如下错误
make[1]: *** [configure-gdb] Error 1 configure: error: no termcap library foundmake[1]: ***[configure-gdb] Error 1
这是应为交叉工具链没有包含termcap这个lib库,而编译gdb需要这个库的接口,因此先用工具链编译这个库,放入工具链中,过程如下:
- 下载termcap源代码:ftp://ftp.gnu.org/gnu/termcap
- 解压termcap包,进入termcap包以后使用/configure命令配置生成Makefile:
- ./configure --target= powerpc-linux-gnuspe --prefix=/home/termcap
- 手动修改Makefile:CC=powerpc-linux-gnuspe-gcc
- 执行make,然后makeinstall,在/home/termcap目录就可以看到交叉编译生成的libtermcap.a
- 到交叉编译器文件夹下搜索包含libc.a的目录:find –name libc.a,搜索到之后将libtermcap.a拷贝到其中,如果搜索到多个不确定哪个目录那就都拷贝一份。
- 重新到gdb目录执行make,然后makeinstall
-
/home/gdb/bin下生成的gdb是包含了gcc编译调试信息的gdb,文件比较大,执行下面命令,压缩去除多余调试信息:
powerpc-linux-gnuspe-stripgdb -o gdb-stripped
检查一下编出来的文件信息,可以看到
# file gdb-stripped gdb-stripped: ELF 32-bit MSB executable, PowerPC or cisco 4500,version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.0.0,stripped
-
至此gdb交叉编译完毕,将gdb-stripped拷贝到单板即可运行。