平台: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
checking for library containing tgetent... no
configure: error: no termcap library found
make[]: *** [configure-gdb] Error

安装方法:

解决这个问题需要自己去新下载一套ncurses的最新代码,重新交叉编译出来,再拷到交叉gcc的库默认搜索路径下去就能解决。

wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.8.tar.gz

tar xvf ncurses-5.8.tar.gz

cd ncurses-5.8

./configure --prefix=/root/work/tq2440/tools/gdb/ncurses-5.8/bin --host=arm-linux CC=arm-linux-gcc

make&&make install

cd bin

cp -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/gdb
make
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 gdbserver
make
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

完。

Linux下交叉编译gdb和gdbserver的更多相关文章

  1. Linux下交叉编译gdb,gdbserver+gdb的使用以及通过gdb调试core文件

    交叉编译gdb和gdbserver 1.下载gdb:下载地址为:http://ftp.gnu.org/gnu/gdb/按照一般的想法,最新版本越好,因此下载7.2这个版本.当然,凡事无绝对.我们以gd ...

  2. Linux下使用GDB调试程序

    问题描述:          Linux下使用GDB调试程序 问题解决:          (1)生成调试文件 注:         使用命令   gdb IOStream.c   -o IOStre ...

  3. Zedboard学习(二):zedboard的Linux下交叉编译环境搭建 标签: 交叉编译linuxzedboard 2017-07-04 23:49 19人阅读

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

  4. Linux下使用GDB进行调试

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

  5. linux下使用gdb对php源码调试

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

  6. Linux下用gdb 调试、查看代码堆栈

      Linux中用gdb 查看代码堆栈的信息 core dump 一般是在segmentation fault(段错误)的情况下产生的文件,需要通过ulimit来设置才会得到的. 调试的话输入: gd ...

  7. linux下的gdb调试工具--断点调试

    到目前为止我们的调试手段只有一种: 根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入printf,执行程序并分析打印结果,如果结果和预期的一样,就基本上证明了自己假设的错误原因,就可以 ...

  8. 交叉编译gdb和gdbserver

    从http://ftp.gnu.org/gnu/gdb/下载最新的gdb,我下载的是gdb-8.0. 编译aarch32(>armv5): #!/bin/bash export CC=arm-n ...

  9. NOI Linux下Emacs && gdb调试方法

    1. 首先要配置emacs文件: (global-linum-mode t) (show-paren-mode t) (global-set-key (kbd "C-s") 'sa ...

随机推荐

  1. MINA 网络黏包处理代码

    本文完整代码,可以浏览: https://github.com/hjj2017/xgame-code_server/blob/master/game_server/src/com/game/gameS ...

  2. Linux 添加PPA源

    我们在使用Ubuntu安装程序时经常会遇到添加软件源的操作,最常见的是ppa软件源. 例如:sudo add-apt-repository ppa:rvm/smplayer 这就是添加smplayer ...

  3. dj定时任务

    参考:http://www.mknight.cn/post/13/ https://blog.csdn.net/sicofield/article/details/50937338 一.INSTALL ...

  4. linux驱动基础系列--linux rtc子系统

    前言 linux驱动子系统太多了,连时钟也搞了个子系统,这导致一般的时钟芯片的驱动也会涉及到至少2个子系统,一个是时钟芯片接口子系统(比如I2c接口的时钟芯片),一个是内核给所有时钟芯片提供的rtc子 ...

  5. 详解Python中的__new__、__init__、__call__三个特殊方法(zz)

    __new__: 对象的创建,是一个静态方法,第一个参数是cls.(想想也是,不可能是self,对象还没创建,哪来的self)__init__ : 对象的初始化, 是一个实例方法,第一个参数是self ...

  6. python-函数(命名空间、作用域、闭包)

    一.命名空间 全局命名空间 局部命名空间 内置命名空间 *内置命名空间中存放了python解释器为我们提供的名字:input,print,str,list,tuple...它们都是我们熟悉的,拿过来就 ...

  7. MATLAB的简单动画制作

    这里介绍两种类型的动画实现,一种使用getframe和movie命令实现帧动画,另一种使用comet(comet3)命令实现画图过程的动画. ①getframe和movie命令实现帧动画 例如,创建一 ...

  8. js中OOP小指南

    js中OOP小指南 在指南中,我将尝试解析以面向对象规范聚焦的es6的新特性. 首先, 什么是设计模式 范例是某个事务的例子或模型,在某种情况下,按照一种模式创建了计算机程序. 什么是面向对象 显然你 ...

  9. centos6.5 中文输入法图标和提示都不见了【解决】

    原因python升级引起的 两步解决: # vi /usr/bin/ibus-setup # vi /usr/libexec/ibus-ui-gtk 把这两个文件中的exec python 修改为 e ...

  10. poj1789 最小生成树

    题目连接:http://poj.org/problem?id=1789 Description Advanced Cargo Movement, Ltd. uses trucks of differe ...