关于Gdb工具的交叉编译、移植


文章目录

  • 前言
  • 一、termcap库的准备
  • 二、GDB的下载准备以及交叉编译
    • 1.下载gdb7.0解压安装
    • 2.移植
    • 3.交叉编译libz库
  • 总结

前言

为了在arm-linux处理器上捕捉程序异常,调试程序,需使用GDB工具,需要将gdb源码使用交叉编译工具编译成为可在arm处理器上运行的格式。需要的工具为交叉编译工具链arm-none-linux-gnueabi-gcc 本人使用的是4.3.2版本交叉工具链。编译中需要的依赖库有termcap。

一、termcap库的准备

1
termcap库的下载地址:(https://mirrors.sjtug.sjtu.edu.cn/gnu/termcap/)

我使用的是termcap1.3.1的库,大家可以使用此库使用交叉编译工具编译成为静态库为编译gdb所依赖的库。以下为编译termcap的操作步骤。

1
2
3
4
5
tar -zxvf termcap1.3.1.tar.gz
cd  termcap1.3.1
./configure  --prefix=/home/termcap/
make
make install

操作完上面的命令后会在我们定义的、home/termcap/中的lib中查看到libtermcap.a库。
注: 修改Makefile 中的CC = gcc 改为 CC = arm-linux-gcc AR = ar 改为 AR = arm-linux-ar 后再进行make 以及后面的操作

二、GDB的下载准备以及交叉编译

1.下载gdb7.0解压安装

1
gdb源码下载地址:[gdb下载链接地址](ftp://sourceware.org/pub/gdb/releases/)

本人使用的是gdb7.0的版本进行的本次移植实验。下载gdb7.0.tar.gz包后。我们进行如下的操作指令。

1
2
3
4
5
6
7
8
9
tar -zxvf gdb7.0.tar.gz
cd gdb7.0
./configure   --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc CPP=arm-none-linux-gnueabi-g++ AR=arm-none-linux-gnueabi-ar --enable-shared --prefix=/home/gdb/ --without-x --disable-gdbtk --disable-tui --without-include-regex --without-include-gettext
 LDFLAGS="-L/home/termcap/lib" CPPFLAGS="-I/home/termcap/include"
 #配置生产Makefile

make CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ AR=arm-none-linux-gnueabi-ar

make install

/生成 Makefile
//–enable-shared:动态编译
//–host=arm-linux:用 arm-linux-gcc 编译
//–prefix=/usr/local/gdb 安装目录
//–without-x 取消 x windows 支持
//–disable-gdbtk 取消 gdbtk,应该也是图形界面相关的
//–disable-tui 取消 tui 界面
//–without-included-regex 关闭正则表达式库
//–without-included-gettext 去掉用于多语言处理的 gettext库,正则表达式/gettext,暂时不需要,先去掉
//CPPFLAGS/LDFLAGS 是确保能找到 ARM 版的 termcap库
:–build=编译该软件所使用的平台、–host=该软件将运行的平台、
   --target=该软件所处理的目标平台 LDFLAGS代表gdb链接所依赖的库,当需要依赖多哥库时我们可以使用命令:LDFLAGS="-L/path1 -L/path2 -L/path3" CPPFLAGS是用的是包含的头文件。

2.移植

在执行完成上面的操作后会生成,bin、lib、share的文件将其移植在arm开发板上。然后就可以运行了。但是我在将此文件移植到arm板上的时候发现没运行的时候发现缺少libz.1.so的库,因此需要libz的库编译移植在arm开发板中的lib中就可以了。或者运行前export LD_LIBRARY=“”路径”即可。

3.交叉编译libz库

下载 zlib库的地址:http://www.zlib.net/zlib-1.2.11.tar.gz
下载后进行解压安装等操作。如下的指令操作

1
2
3
4
5
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.1.22
./configure --prefix=/hme/zlib
make
make install

注:修改Makefile文件中的cc=arm-none-linux-gnueabi-gcc ,LDSHARED=arm-none-linux-gnueabi-gcc后再执行make 等命令将生成的lib文件移植在板卡的/lib目中


总结

以上是本人进行gdb交叉编译的记录,有不足之处望望指正。本文仅仅简单介绍了gdb的交叉编译以及移植,下一次写一篇有关gdb调试使用的文章。