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

  • From: PcX <xunxun1982@xxxxxxxxx>
  • To: hellogcc@xxxxxxxxxxxxx
  • Date: Thu, 06 Jan 2011 17:38:17 +0800

不懂MIPS64,如果是64位编译器,编译x86时加入-m32吧。
另外为啥把全部的优化都关闭呢,-g -O2不可行?

//ncurese是啥?应该是ncurses吧。

于 2011/1/6 16:35, Liu 写道:
之前水哥写了一个通用的,我这个是针对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出来,基本上可以满足大多数需要了。

--
Regards
PcX

Other related posts: