平台:tq2440

GCC:  gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176)

这里过程中参考了下面两篇博文:

http://blog.csdn.net/hejianhua/article/details/7254836

http://blog.csdn.net/fly_qj/article/details/8272555

1、下载gdb

下载地址为:http://ftp.gnu.org/gnu/gdb/

我们以gdb-7.9.tar.xz 这个文件为例。

2、安装软件包

  • textinfo

否则会提示makeinfo找不到。

安装方法:

sudo apt-get install textinfo

  • libncurses5-dev

否则会出现如下错误:

configure: WARNING: no enhanced curses library found; disabling TUI
checkingforlibrary containing tgetent... no
configure: error: no termcap library foundmake[1]: *** [configure-gdb] Error 1

安装方法:

解决这个问题需要自己去新下载一套ncurses的最新代码,重新交叉编译出来,再拷到交叉gcc的库默认搜索路径下去就能解决。wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.8.tar.gztar xvf ncurses-5.8.tar.gzcd ncurses-5.8./configure --prefix=/root/work/tq2440/tools/gdb/ncurses-5.8/bin --host=arm-linux CC=arm-linux-gccmake&&make installcd bincp -rf lib/*/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/usr/lib/cp -rf include/* /opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/usr/include

3、编译安装gdb和gdbserver

  • 目录结构
.
├── gdb                 # 存放编译产生的arm-linux-gdb可执行程序
├── gdb-7.9# gdb和gdbserver的源码目录
├── gdb-7.9.tar.xz
├── gdb_build           # 编译gdb时的中间编译文件
├── gdbserver           # 存放编译生成的arm-linux-gdbserver可执行程序
├── gdbserver_build     # 存放编译gdbserver时的编译结果
├── ncurses-5.8└── ncurses-5.8.tar.gz

  • 编译安装gdb
cd gdb_build
../gdb-7.9/configure --target=arm-linux --program-prefix=arm-linux- --prefix=/root/work/tq2440/tools/gdb/gdbmake
make install

:--target=arm-linux意思是说目标平台是运行于ARM体系结构的linux内核;--program-prefix=arm-linux-是指生成的可执行文件的前缀,比如arm-linux-gdb,--prefix是指生成的可执行文件安装在哪个目录,这个目录需要根据实际情况作选择。如果该目录不存在,会自动创建,当然,权限足够的话。

生成的可执行程序存放在/root/work/tq2440/tools/gdb/gdb下:

gdb
├── bin
│   ├── arm-linux-gdb
│   └── arm-linux-run
├── include
│   └── gdb
├── lib
│   └── libarm-linux-sim.a
└── share├── gdb├──info├── locale└──man

可以对生成的arm-linux-gdb进行strip

strip arm-linux-gdb -o arm-linux-gdb-stripped

  • 编译安装gdbserver
cd gdbserver_build
../gdb-7.9/gdb/configure --target=arm-linux --host=arm-linux --prefix=/root/work/tq2440/tools/gdb/gdbserver
cd gdbservermake
make install

最后生成的可执行程序存放在/root/work/tq2440/tools/gdb/gdbserver目录下

gdbserver
└── bin└── arm-linux-gdbserver

可以对arm-linux-gdbserver进行strip

arm-linux-strip gdbserver -o gdbserver-stripped

注意,这里必须使用strip的交叉版本,也就是arm-linux-strip

到此,我们生成了两个重量级别的文件:arm-linux-gdbgdbserver。它们的版本是一致的,这一点非常重要。我们需要将gdbserver下载到开发板中,——可以通过各种各样的手段,包括但不限于NFS。调试时需要在开发板中运行这个程序。同时在主机中执行arm-linux-gdb调试器。

下面是我编译出的arm-linux-gdbserver和arm-linux-gdb,可以用于tq2440远程调试:

http://files.cnblogs.com/files/pengdonglin137/tq2440_arm-linux-gdb%26arm-linux-gdbserver.7z

完。

转载于:https://www.cnblogs.com/pengdonglin137/p/4751279.html

Linux下交叉编译gdb和gdbserver相关推荐

  1. Zedboard学习(二):zedboard的Linux下交叉编译环境搭建

    环境准备 首先肯定是要下载xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin文件,这是官方提供的linux下交叉编译链安装文件,下载地址为:https://p ...

  2. linux下 如何调试php,linux下使用gdb对php源码调试

    title: linux下使用gdb对php源码调试 date: 2018-02-11 17:59:08 tags: --- linux下使用gdb进行php调试 调试了一些php的漏洞,记录一下大概 ...

  3. Linux下使用GDB进行调试

    Linux下使用GDB进行调试的常用命令记于此. $ sudo su # g++ -g test.cpp -o test -pthread # gdb test         <------- ...

  4. linux下使用gdb调试崩溃和死锁实例

    gdb是linux下一款功能强大的调试工具,windows下对应的有windbg,下面举例说明常见程序错误解决方法 1.gdb启动 要想使用gdb调试,编译时指定-g选项加入调试信息,gdb可以启动执 ...

  5. linux下交叉编译libusb的方法及编译一个使用了libusb库的test程序的方法

    linux交叉编译libusb的方法 下载libusb 下载网址:libusb - Browse Files at SourceForge.net 交叉编译libusb 将下载好的libusb压缩包解 ...

  6. linux中多进程调试,linux下用gdb调试多进程

    今天来学习一下linux下gdb如何调试多进程,在学习之前我我们能先看一张表: 这张表是gdb调试的命令表,这对那些对gdb不熟的同学来说是非常有必要的. 一.多进程调试的命令 1.set follo ...

  7. Linux 下使用 gdb 调试 core 文件

    1.core文件 当程序运行过程中出现段错误(Segmentation Fault),程序将停止运行,由操作系统把程序当前的内存状况存储在一个 core 文件中,即核心转储文件(Coredump Fi ...

  8. arm linux下交叉编译valgrind工具进行内存泄露检测和性能分析

    C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种纠结的问题.如果crash的地方正是内存使用错误的地方,说明你人品好.如果crash的地方内存明显不是consistent的 ...

  9. linux下交叉编译jrtplib-3.9.1

    一.下载jrtplib.jthread.CMake jrtplib:http://research.edm.uhasselt.be/jori/jrtplib/jrtplib-3.9.1.zip jth ...

最新文章

  1. python常用包下载_Python及其常用模块库下载及安装
  2. 单片机检测stc没反应_STC 核心板 入门记 - 你好我叫郑某人
  3. 项目经理主要工作职责
  4. SAP Spartacus 命名的由来
  5. 【原创】CLEVO P157SM外接鼠标键盘失灵解决:更换硅脂(附带最新跑分数据)
  6. 用exists代替distinct
  7. wegwegwegwegweg
  8. Python中用format函数格式化字符串的用法(2.7版本讲解哦!)
  9. 元组 与 字典
  10. Web前端开发最佳实践(7):使用合理的技术方案来构建小图标
  11. RIP简易配置第二篇
  12. 【2022最新Java面试宝典】—— Java基础知识面试题(91道含答案)
  13. 图像拼接算法的基本原理
  14. 计算机网络技术评估与备选方案,创业学复习提纲
  15. python实现爬取网易云音乐评论,并且将评论信息存储到pymysql
  16. 2021年中国云游戏产业发展环境(PEST)分析:中国云游戏服务拥有光明前景[图]
  17. 单手杀穿经典链表题Pt.2——LeetCode天梯渡劫(倒数第k节点,合并链表,链表分割,回文结构)
  18. 出门在外如何保管毕业证原件_出门在外时如何控制HomeKit智能家居
  19. Dockerfile镜像构建用法
  20. 照片透明背景抠图怎么做?试试这几种抠图方法

热门文章

  1. Python中静态方法的实现
  2. /home/appleyuchi主目录迁移到新磁盘中
  3. 阿里云物流+Flask整合
  4. gevent-tutorial翻译和解读
  5. 误操作导致系统只剩下lo
  6. java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray
  7. 使用pos标记寻找三词短语
  8. cython编码报错
  9. 《Spring_four》团队作业4—基于原型的团队项目需求调研与分析
  10. 手把手教你查看android系统源码