不懂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