[hellogcc] 【投稿】交叉编译gdb,水哥和yao多指点指点。

  • From: Liu <proljc@xxxxxxxxx>
  • To: hellogcc <hellogcc@xxxxxxxxxxxxx>
  • Date: Thu, 6 Jan 2011 16:35:33 +0800

之前水哥写了一个通用的,我这个是针对cross的。具体完整“脚本”见附件,我是想弄一个好的脚本出来,有心无力。

以MIPS为例,我们会得到3个目标:
1,运行在MIPS上的gdb。
2,运行在MIPS上的gdb-server。
3,运行在x86上的 交叉gdb。
目标1用来在MIPS的板子上直接运行,ssh过去调试的时候用这个。
目标2和目标3配合起来做远程调试,具体怎么用我还不会。

下来结合步骤来说一下build的方法:

gdb需要termcap,这样需要自己build出来一个,当然,本机的libncurese-dev还是要安装的。因为本机安装的libncurese-dev是给目标3用的。我们现在build的这个termcap是给目标1和目标2用的。

tar vxf ${SOURCE}/termcap-1.3.1.tar.gz
cd termcap-1.3.1/
不解释

CC="${CROSS_TARGET}-gcc ${BUILD64}" \
RANLIB="${CROSS_TARGET}-ranlib" \
./configure --prefix=/tools --host=${CROSS_TARGET} --target=${CROSS_TARGET}
这个需要我们指定MIPS的交叉编译器。--host指的是编译出来的gdb运行在什么平台下,这里必然是MIPS了。

make && make install
cd..
不解释

然后就开始gdb的build了

tar vxf ${SOURCE}/gdb-7.2.tar.bz2
这个没啥好解释的

mkdir gdb-server-build
cd gdb-server-build
这个目录是用来build目标1和目标2的,所以就叫gdb-server-build吧。

CC="${CROSS_TARGET}-gcc ${BUILD64}" \
../gdb-7.2/configure --prefix=/tools \
--host=${CROSS_TARGET} --target=${CROSS_TARGET} --build=${CROSS_HOST} \
--disable-shared --enable-64-bit-bfd
用--enable-64-bit-bfd的原因是因为我需要支持MIPS64,--disable-shared是为了少一些麻烦。这里prefix是tools,而不是cross-tools,是因为这里编译出来的二进制都是在MIPS上跑的,跟前面的termcap是一样的。

make CFLAGS="-g -O0" && make install
毕竟修改了,还要调试的,所以加上调试信息比较好。
cd ..

最后是build交叉gdb
mkdir gdb-build
cd gdb-build
../gdb-7.2/configure --prefix=/cross-tools --target=${CROSS_TARGET}
唯一不同的是,这个交叉gdb是在x86上跑,所以prefix是cross-tools
make CFLAGS="-g -O0" && make install
cd ..

这时我们就得到了一套gdb出来,基本上可以满足大多数需要了。

Other related posts: