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

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

你可以自己修改参数,用MIPS32的。只是我需要MIPS64,用MIPS64做例子罢了。
multilib的脚本之前我发过,但是我没用过,好像也是-m32对应32的。

脚本修正,刚才的脚本有一点儿拼写错误。

2011/1/6 PcX <xunxun1982@xxxxxxxxx>:
> 不懂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:

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