debain实现交叉编译gdb和gdbserver


        最近工作比较忙,终于用休息时间了,就写点东西吧, 在进入主题之前,我先聊聊欧洲杯意大利对德国的比赛(我不是一个足球迷,有一个朋友是一个足球迷,被他拉着看的),当巴神打进 第二个球时有一个镜头上有个球迷掉下眼泪,我为足球的魅力缩感动,也为这个伟大的运动所感到。

       最近在arm板子上做开发,遇到内存问题,本人习惯用emacs中gdb远程调试, 找了半天没有交叉编译工具连上没有找到gdb不知道海思SDK为什么为什么没有所以只好自己手动编译一个了, 想记录下自己编译过程,希望和大家一起分享。

1、下载gdb:
下载地址为:
http://ftp.gnu.org/gnu/gdb/
我们以gdb-7.2.tar.bz2 这个文件为例。
2、解压缩:

      tar jxvf gdb-7.2a.tar.bz2
3、进入该目录:

      cd gdb-7.2

4、配置:

      ./configure --target=arm-linux --program-prefix=arm-linux- --prefix=/home/horst/gdb-build

:--target=arm-linux意思是说目标平台是运行于ARM体系结构的linux内核;--program-prefix=arm-linux-是指生成的可执行文件的前缀,比如arm-linux-gdb,--prefix是指生成的可执行文件安装在哪个目录,这个目录需要根据实际情况作选择。如果该目录不存在,会自动创建,当然,权限足够的话。

5、编译、安装

    mak;mak install
幸运的话,会在--prefix指定的目录下生成三个子目录:bin、lib、share,我们需要的arm-linux-gdb就在其中的bin目录下。

你可以调用strip将它变小一些,哈哈那就看看你自己了。。。。。

1、在刚才那个gdb解压后的目录:gdb-7.2,进入./gdb/gdbserver子目录

2、配置

$ ./configure --target=arm-linux --host=arm-linux

这里的--host指定了生成可执行文件运行的平台和系统:运行于ARM平台的Linux系统
3、编译

make CC=arm-hisiv100ntp-linux-gcc

make可能出错,可以将生成的config.h文件中

#define HAVE_SYS_REG_H 1
注释掉就行了
同样你可一减小它的体积
$ arm-hisiv100ntp-linux-strip gdbserver -o gdbserver-stripped 
$ ls -lh | grep gdbserver
任务完成你就可以工作了

你可能感兴趣的:(工作,linux,emacs,任务,平台,linux内核)