在inter虚拟机上交叉编译arm开发板上GDB调试工具

O:环境描述
  在intel32 pc虚拟机中编译arm32开发板下gdb。

一:arm-linux的gdb分为两种:
1.client/server模式
 arm开发板中起gdb-client,服务器(有可能是pc机)中起gdb-server。这种不适用,因为数据从client发送到server是有网络延时的,所以异常跑飞的程序不能看到第一现场。

2.本地模式
该模式直接在开发板上使用调试,比较合适。本文编译的是本地模式,但在本地模式gdb编译的过程中,gdb-server也编译成功了。但我们使用本地模式调试。


二:gdb编译
1.编译前的准备(termcap安装)
官网下载termcap-1.3.1.tar.gz,解压。
./configure --target=arm-linux-gnueabihf --prefix=/opt/termcap
make  && make  install
cp /opt/termcap/include/termcap.h /usr/include
cp /opt/termcap/lib/libtermcap.a /opt/gcc-linaro-7.4.1-2019.02-i686_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib   //拷贝到交叉工具链目录下
 
2.编译
官网下载:arm-linux-gdb-7.5.tar.gz,解压。
./configure --host=arm-linux --prefix=/opt/arm-linux-gdb --enable-shared --without-x --disable-gdbtk --disable-tui --without-included-regex --without-included-gettext --disable-werror


--enable-shared    动态编译
--host=arm-linux  用arm-linux-gcc编译
--prefix=/opt/arm-linux-gdb 安装目录
--without-x     取消x windows 支持
--disable-gdbtk  取消gdbtk,应该也是图形界面相关的
--disable-tui   取消tui 界面
--without-included-regex 关闭正则表达式库
--without-included-gettext  去掉用于多语言处理的 gettext库
   正则表达式/gettext,暂时不需要,先去掉
--disable-werror 关闭告警当错误处理


make && make install

make过程中会报gdb源码中的函数和arm gcc头文件中的函数重定义冲突,注销gdb源码中的函数。这样目的是为了使用arm gcc中提供的函数。这样在arm开发板中才能无障碍运行。

三:运行
拷贝/opt/arm-linux-gdb目录到arm开发板/opt/arm-linux-gdb,进入/opt/arm-linux-gdb/bin下运行./gdb开始调试。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章