Chinaunix首页 | 论坛 | 博客
  • 博客访问: 625389
  • 博文数量: 262
  • 博客积分: 8433
  • 博客等级: 中将
  • 技术积分: 2141
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-31 09:37
文章分类

全部博文(262)

文章存档

2012年(1)

2011年(168)

2010年(92)

2009年(1)

分类: 嵌入式

2010-12-17 11:05:59

ubuntu/debian intrepid + gcc-4.2 + gdb-6.8
以前也曾尝试过,可总由于方法不得当(编译器或GDB版本等),总是有所欠缺


1、常见错误及解决,

1)编译gdb时,gcc版本过高(比如4.3)会导致编译错误,
bscripts -Werror .././gdb/cli/cli-cmds.c
cc1: warnings being treated as errors
.././gdb/cli/cli-cmds.c: 在函数‘pwd_command’中:
.././gdb/cli/cli-cmds.c:323: 错误: 忽略声明有 warn_unused_result 属性的‘getcwd’的 返回值
make[2]: *** [cli-cmds.o] 错误 1
make[2]:正在离开目录 `/home/rambo/fc/gdb-6.8/gdb'
make[1]: *** [all-gdb] 错误 2
make[1]:正在离开目录 `/home/rambo/fc/gdb-6.8'
make: *** [all] 错误 2

from:
是源码中有些函数定义不规范,用对函数格式非常严格的GCC 4.3编译就会出错。

重新配置,使用gcc-4.2,另,需要操作 rm -rf build/*(清除历史配置信息)


2) 编译gdbserver时出现PATH_MAX undeclared错误的解决方法:
在hostio.c文件中增加
#include
原因是宏PATH_MAX在中没有定义,而是定义在


2、附:编译过程,

1)编译 ARM 平台的 GDB
$ cd ~/cross
$ wget -c
$ tar jxvf gdb-6.8.tar.bz2
$ mkdir -p ~/corss/gdb-6.8/build                       
//此处在源码目录下新建一build目录用以编译,是个好习惯~
$ cd ~/corss/gdb-6.8/build

gcc版本太高(比如4.3),编译会出错(参照错误及解决方法中的 1))
由于所使用系统中存在多个编译器,且默认为gcc-4.3,版本过高
因此配置的时候使用CC指定编译GDB所使用的编译器(gcc-4.2)

$ which gcc-4.2 -> /usr/bin/gcc-4.2
$ ../configure CC=gcc-4.2 --target=arm-linux --prefix=~/cross/install --program-prefix=arm-linux-
$ make
$ make install                         
//安装至configure时--prefix指定路径下

至于如何连接到远程目标,可通过在目标板运行gdbserver
然后根据具体情况,选择串行或tcp或udp连接方式

2)编译 gdbserver
$ cd ~/cross/gdb-6.8/gdb/gdbserver
$ mkdir build
$ cd build
$ ../configure --target=arm-linux-gnu --host=arm-linux
$ make


到此,gdbserver交叉编译成功

注:只是对编译过程中出现的问题进行总结,不涉及使用,另行参照资料。
阅读(2194) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~