Linux下交叉编译gdb和gdbserver
平台: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-gdb和gdbserver。它们的版本是一致的,这一点非常重要。我们需要将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相关推荐
- Zedboard学习(二):zedboard的Linux下交叉编译环境搭建
环境准备 首先肯定是要下载xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin文件,这是官方提供的linux下交叉编译链安装文件,下载地址为:https://p ...
- linux下 如何调试php,linux下使用gdb对php源码调试
title: linux下使用gdb对php源码调试 date: 2018-02-11 17:59:08 tags: --- linux下使用gdb进行php调试 调试了一些php的漏洞,记录一下大概 ...
- Linux下使用GDB进行调试
Linux下使用GDB进行调试的常用命令记于此. $ sudo su # g++ -g test.cpp -o test -pthread # gdb test <------- ...
- linux下使用gdb调试崩溃和死锁实例
gdb是linux下一款功能强大的调试工具,windows下对应的有windbg,下面举例说明常见程序错误解决方法 1.gdb启动 要想使用gdb调试,编译时指定-g选项加入调试信息,gdb可以启动执 ...
- linux下交叉编译libusb的方法及编译一个使用了libusb库的test程序的方法
linux交叉编译libusb的方法 下载libusb 下载网址:libusb - Browse Files at SourceForge.net 交叉编译libusb 将下载好的libusb压缩包解 ...
- linux中多进程调试,linux下用gdb调试多进程
今天来学习一下linux下gdb如何调试多进程,在学习之前我我们能先看一张表: 这张表是gdb调试的命令表,这对那些对gdb不熟的同学来说是非常有必要的. 一.多进程调试的命令 1.set follo ...
- Linux 下使用 gdb 调试 core 文件
1.core文件 当程序运行过程中出现段错误(Segmentation Fault),程序将停止运行,由操作系统把程序当前的内存状况存储在一个 core 文件中,即核心转储文件(Coredump Fi ...
- arm linux下交叉编译valgrind工具进行内存泄露检测和性能分析
C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种纠结的问题.如果crash的地方正是内存使用错误的地方,说明你人品好.如果crash的地方内存明显不是consistent的 ...
- linux下交叉编译jrtplib-3.9.1
一.下载jrtplib.jthread.CMake jrtplib:http://research.edm.uhasselt.be/jori/jrtplib/jrtplib-3.9.1.zip jth ...
最新文章
- python常用包下载_Python及其常用模块库下载及安装
- 单片机检测stc没反应_STC 核心板 入门记 - 你好我叫郑某人
- 项目经理主要工作职责
- SAP Spartacus 命名的由来
- 【原创】CLEVO P157SM外接鼠标键盘失灵解决:更换硅脂(附带最新跑分数据)
- 用exists代替distinct
- wegwegwegwegweg
- Python中用format函数格式化字符串的用法(2.7版本讲解哦!)
- 元组 与 字典
- Web前端开发最佳实践(7):使用合理的技术方案来构建小图标
- RIP简易配置第二篇
- 【2022最新Java面试宝典】—— Java基础知识面试题(91道含答案)
- 图像拼接算法的基本原理
- 计算机网络技术评估与备选方案,创业学复习提纲
- python实现爬取网易云音乐评论,并且将评论信息存储到pymysql
- 2021年中国云游戏产业发展环境(PEST)分析:中国云游戏服务拥有光明前景[图]
- 单手杀穿经典链表题Pt.2——LeetCode天梯渡劫(倒数第k节点,合并链表,链表分割,回文结构)
- 出门在外如何保管毕业证原件_出门在外时如何控制HomeKit智能家居
- Dockerfile镜像构建用法
- 照片透明背景抠图怎么做?试试这几种抠图方法
热门文章
- Python中静态方法的实现
- /home/appleyuchi主目录迁移到新磁盘中
- 阿里云物流+Flask整合
- gevent-tutorial翻译和解读
- 误操作导致系统只剩下lo
- java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray
- 使用pos标记寻找三词短语
- cython编码报错
- 《Spring_four》团队作业4—基于原型的团队项目需求调研与分析
- 手把手教你查看android系统源码