嵌入式gdb工具编译

        对于嵌入式GDB而已,分为两种,这两种方法的的区分是鉴于使用和编译后的工具而言。


                1、第一种是开发板上使用的GDB,就像PC机上Linux系统使用GDB一样。

                2、第二种是开发板上使用单板的GDB Client,PC机上使用PC版本GDB Server。两者通过网络来交互信息实现调试。


        笔者调试是使用的第一种,这里也主要介绍第一种gdb的编译方法。


        Ø 下载最新的gdb源代码,目前最新的版本为7.8:http://ftp.gnu.org/gnu/gdb/


        Ø 添加交叉编译链到环境变量,即将交叉编译链所在的文件路径加到环境变量中:

        如:

export PATH=/opt/freescale/usr/local/gcc-4.1.78-eglibc-2.5.78-dp-1/powerpc-linux-gnuspe/bin:/opt/freescale/usr/local/gcc-4.1.78-eglibc-2.5.78-dp-1/powerpc-linux-gnuspe/powerpc-linux-gnuspe/bin:$PATH


        Ø 进入gdb目录,执行

./configure--host=powerpc-linux-gnuspe --enable-shared --prefix=/home/gdb CC=powerpc-linux-gnuspe-gcc

        其中:

--enable-shared    动态编译

--host=                 powerpc-linux-gnuspe-gcc编译,注意该选项不是任意自己定,而是根据交叉编译链的名字取其前缀,如笔者MPC8548交叉编译链名称为powerpc-linux-gnuspe-gcchost定义为powerpc-linux-gnuspe

--prefix=              安装目录

cc 表示gcc文件名


        待Linux会自动配置文件生成Makefile文件后执行make,如果没有异常情况,经过漫长的等待之后就会正常生成单板可运行的gdb交叉编译文件,执行make install后在prefix定义的目录的/home/gdb/bin目录下就能看的生成的gdb,但往往在编译的时候都会报下面这个错:

make[1]: *** [configure-gdb] Error 1

configure: error: no termcap library foundmake[1]: ***[configure-gdb] Error 1

        这是因为大多数交叉编译链工具都没有包含termcap这个lib库,而编译gdb需要用到这个库的接口。需要先交叉编译这个库后放入到交叉编译链的lib库中。


  •         下载termcap源代码:ftp://ftp.gnu.org/gnu/termcap
  •         解压termcap包,进入termcap包以后使用/configure命令配置生成Makefile:

./configure --target= powerpc-linux-gnuspe --prefix=/home/termcap

  •         手动修改Makefile:CC=powerpc-linux-gnuspe-gcc
  •         执行make,然后makeinstall,在/home/termcap目录就可以看到交叉编译生成的libtermcap.a

        到交叉编译器文件夹下搜索包含libc.a的目录:find –name libc.a,搜索到之后将libtermcap.a拷贝到其中,如果搜索到多个不确定哪个目录那就都拷贝一份。


        重新到gdb目录执行make,然后makeinstall,/home/gdb/bin下生成的gdb是包含了gcc编译调试信息的gdb,文件比较大,执行下面命令,压缩去除多余调试信息:

# powerpc-linux-gnuspe-stripgdb -o gdb-stripped


        检查一下编出来的文件信息,可以看到:

# file gdb-stripped

gdb-stripped: ELF 32-bit MSB executable, PowerPC or cisco 4500,version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.0.0,stripped

        至此gdb交叉编译完毕,将gdb-stripped拷贝到单板即可运行。


猜你喜欢

转载自blog.csdn.net/feixiang3839/article/details/41093021