Chinaunix首页 | 论坛 | 博客
  • 博客访问: 511252
  • 博文数量: 119
  • 博客积分: 5054
  • 博客等级: 大校
  • 技术积分: 1305
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-03 13:13
文章分类

全部博文(119)

文章存档

2011年(4)

2010年(115)

我的朋友

分类: 嵌入式

2010-04-08 17:49:13

参考http://pannsp.blog.163.com/blog/static/9202320089343724228/

软件准备:gdb-7.1.tar.bz2(目前最新版本)
可到下载

三个主要术语解释:

--target 指定编译后的文件针对的是什么目标板,一般设置为交叉编译器的前缀,比如–target=arm-linux, –target=mips-linux, –target的缺省值为i386-linux, 也就是PC机(ps:意思是配置脚本程序会把检测到的当前使用平台作为默认值)。

--host 指定编译后的文件的运行环境,取值可以是i386-linux或者交叉编译器的前缀,缺省为i386-linux(ps:意思同上)。

--prefix 指定要安装的目录。

把软件下载到当前的工作目录后,比如我下载的软件包放在~/download/目录。
1、解压缩软件包

cd ~/download
tar xf gdb-7.1.tar.bz2

2、建立配置文件,编译、安装
1)gdb

cd gdb-7.1
./configure --target=arm-angstrom-linux-gnueabi --prefix=/opt/toolchains/arm920t-eabi (ps:这里没有指定--host参数表示gdb是在当前使用的平台上运行的)
make
sudo make install

2)接着安装gdbserver

cd gdb/gdbserver
./configure --target=arm-angstrom-linux-gnueabi --host=arm-linux --prefix=/opt/toolchains/arm920t-eabi/gdbserver (ps:这里指定了gdbserver的运行平台是arm-linux)
make
sudo make install

问题解决:
我在安装gdbserver时出现了下面这些错误:

hostio.c: In function ‘require_filename’:
hostio.c:67: 错误: ‘PATH_MAX’未声明(在此函数内第一次使用)
hostio.c:67: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其
hostio.c:67: 错误: 所在的函数内也只报告一次。)
hostio.c: In function ‘handle_open’:
hostio.c:266: 错误: ‘PATH_MAX’未声明(在此函数内第一次使用)
hostio.c:266: 警告: 未使用的变量‘filename’
hostio.c: In function ‘handle_unlink’:
hostio.c:431: 错误: ‘PATH_MAX’未声明(在此函数内第一次使用)
hostio.c:431: 警告: 未使用的变量‘filename’
make: *** [hostio.o] 错误 1

thread-db.c: In function ‘thread_db_load_search’:
thread-db.c:661: 错误: ‘PATH_MAX’未声明(在此函数内第一次使用)
thread-db.c:661: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其
thread-db.c:661: 错误: 所在的函数内也只报告一次。)
thread-db.c:661: 警告: 未使用的变量‘path’
make: *** [thread-db.o] 错误 1

上网搜索了一下,好像也没有什么好的解决方法,感觉这个问题与使用的交叉编译工具链相关,因为之前使用的另外一个交叉编译工具(也就是友善的那该死的arm-linux-4.3.2的交叉编译工具链)并没有出现这个问题。
就算方法不好,问题还是得解决的,错误提示的意思很明显,就是PATH_MAX常量没有定义,那就给它定义一个值好了。根据常量的名字,这个常量貌似是定义允许文件路径的长度的。
在出现错误的源文件的开头(比如上面的hostio.c、thread-db.c)添加

#define PATH_MAX 4096

保存文件,继续编译,OK。

把gdbserver文件(具体的文件名是/opt/toolchains/arm920t-eabi/gdbserver/bin/arm-linux-gdbserver)拷贝到开发板的系统中的/usr/bin目录就可以了(ps:给它改个短的名字,比如就改成gdbserver好了)。

阅读(1688) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~