移植gdb到海思3716板子的方法

来源:互联网 发布:程序员项目经验 编辑:程序博客网 时间:2024/06/07 11:05

一,gdb介绍

首先我介绍下gdb是分两种的,一种是本机调试用的,一种是配合gdbserver调试用的。网上关于这两种移植方法都有介绍,但很少能看到介绍其区别的。

如果是本机调试的gdb,那么只需在arm板子上运行./gdb ./program即可。如果是gdb+gdbserver,则先在arm板子上运行gdbserver,如./gdbserver ip:port ./program

,然后在PC机(如ubuntu)上运行gdb,如./gdb ./program,进入交互式命令,输入target remote ip:port,然后输入c,通知gdbserver将中断的程序继续执行。接下来就可以调试了,大致是这么一个流程。

这两种方法各有优缺点,我比较倾向于本机调试,下面我介绍下如何移植本机调试的gdb。


二,移植方法

环境:ubuntu12.04

交叉编译工具链路径:/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin

交叉编译工具链默认加载静态库路径:/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/usr/lib

步骤1:下载gdb源码,地址http://ftp.gnu.org/gnu/gdb/ 我下载的是gdb-7.6.tar.bz2。

步骤2:解压后进入目录,运行./configure --host=arm-hisiv200-linux --prefix=/usr/local/gdbarm --program-prefix=hisi3716,生成Makefile文件。

注意,arm-hisiv200-linux换成你实际的交叉编译工具链名称。

步骤3:执行make,

3.1,如果提示

In function 'bfd_fopen':
bfd.h:537:65: error: right-hand operand of comma expression has no effect [-Werror=unused-value]

这是因为源码中有些函数定义不规范,高版本的gcc编译时会报错。解决办法是在./configure 后面加上--disable-werror

3.2,重新make,如果提示找不到libtermcap.a。下载termcap库源代码,地址http://ftp.gnu.org/gnu/termcap/ 我下载的是termcap-1.3.1.tar.gz。

解压后进入目录,运行./configure --host=arm-hisiv200-linux --prefix=/usr/local/termcaparm。然后make & make install。如果顺利,则生成arm架构的libtermcap.a。

如果你像我一样,提示找不到autoconf,那么直接apt-get install autoconf即可。

如果还提示找不到makeinfo,则直接apt-get install texinfo就行。

将编译好的libtermcap.a放到x86-arm/arm-hisiv200-linux/target/usr/lib下。

注意,如果你的工具链不是这个路径,那么你找下里面有没有/usr/lib目录,有的话把库放那里。


再次重新对gdb make &make install,成功!

祝君好运。