移植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,成功!
祝君好运。
- 移植gdb到海思3716板子的方法
- PHP在arm板子上的移植
- qt在嵌入式板子上的移植
- 添加板子ip的方法
- 多种方法求逆元的板子
- arm-linux的gdb移植
- arm-linux的gdb移植
- arm-linux的gdb移植
- arm-linux的gdb移植
- arm-linux的gdb移植
- arm-linux的gdb移植
- GDB 移植 -- 移植一个新体系结构到GDB的步骤
- GDB 移植 -- 移植一个新体系结构到GDB的步骤
- GDB 移植 -- 移植一个新体系结构到GDB的步骤
- 移植tcpdump到海思3716的方法
- u-boot在华恒S3C2410EDU板子上的移植
- 低功耗板子测试功耗的方法
- gdb移植
- 单例模式
- GameEntity(五)—— INpc
- Linux下Nginx的安装
- Inno Setup入门(八)——有选择性的安装文件
- C++中四种类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast要点解析
- 移植gdb到海思3716板子的方法
- ViewPager切换Fragment时ListView数据不更新
- ImageTag 安装
- mariadb linux二进制tar包安装
- ReentrantLock和synchronized关键字有什么区别
- linux 下shell 编程之循环退出break、continue
- 线程——Thread
- JVM的GC机制、收集器与GC调优
- iTunes connect付款日历地址