Fedora12上编译安装gdb-7.2

在Fedora12上编译安装gdb-7.2:编译安装gdb和gdbserver


1. 下载gdb7.2:  ftp://sourceware.org/pub/gdb/releases/gdb-7.2a.tar.bz2

2. 编译安装gdb

2.1 解压:

[zcm@~ #1]$cd /mnt/hgfs/opensource/
[zcm@opensource #2]$ls
a52dec         ffmpeg-1.2.3         libavc1394-0.5.4  libmad-0.15.1b        libxcb-1.6      RTSP__live555       xcb-proto-1.6
build.sh       gdb-7.2a.tar.bz2     libbluray-0.3.0   libpthread-stubs-0.3  linux-2.6.31.5  util-keysyms-0.3.6
doxygen-1.8.5  install-tl-20130904  libdc1394-2.2.1   libraw1394-2.0.5      live            vlc-2.0.5
[zcm@opensource #3]$tar -jxvf gdb-7.2a.tar.bz2 
gdb-7.2/README
gdb-7.2/Makefile.in
gdb-7.2/configure
......

2.2 编译并安装

首先进入gdb解压后的目录:cd gdb-7.2

下面这个脚本是我自己整理的,包含了编译安装的一系列过程。但是在具体编译安装时我会选择分步执行,一方面为了安全,另一方面就是当有错误出现时能及时地看到。

编译安装时主要是通过修改脚本中n的值或是注释一些语句来完成!

#!/bin/sh

n=1

if [ $n -eq 0 ]; then
	TARGET_DIR=/opt/arm-gdb-7.2
	mkdir -p $TARGET_DIR
	chown -R zcm:zcm $TARGET_DIR

	./configure --prefix=$TARGET_DIR --target=arm-arago-linux-gnueabi
else
	make
	#make install

	# do uninstall
	#find . -name Makefile | xargs -i make -f {} uninstall
fi

脚本的内容相信大家都看得明白,我也就不作解释了!


3. 编译并安装gdbserver

[[email protected] #18]$cd gdb/gdbserver/
[zcm@gdbserver #19]$ls build.sh 
build.sh
[zcm@gdbserver #20]$cat build.sh 
#!/bin/sh

n=1

if [ $n -eq 0 ]; then
	TARGET_DIR=/opt/arm-gdbserver-7.2
	mkdir -p $TARGET_DIR
	chown -R zcm:zcm $TARGET_DIR

	./configure --prefix=$TARGET_DIR --target=arm-arago-linux-gnueabi --host=arm-arago-linux-gnueabi
else
	make CC=arm-arago-linux-gnueabi-gcc
	#make install
fi
[zcm@gdbserver #21]$

同样地,上面的build.sh是包含编译并安装gdbserver的一系列语句。

但是在安装时却出现错误:/usr/bin/install: cannot stat `libinproctrace.so': No such file or directory

经上网搜索找到答案,只要修改Makefile.in文件中的第167行即可,改为“if [ x${IPA_DEPFILES} != x ]; then \

因为Makefile是在执行configure时引入Makefile.in后创建的,这样修改后,下次再执行configure也不会再出错了!

参考网址:

http://blog.chinaunix.net/uid-22525389-id-160160.html

http://www.cppblog.com/zhangyq/archive/2010/09/02/125464.html


4. 环境变量的配置(略)


补充说明:

在使用编译出来的gdb进行交叉调试时,发现经常会出现:Remote 'g' packet reply is too long ”这个错误。在网上搜索后找到答案:

需要修改gdb-7.2/gdb/remote.c文件,将第5686行:

if (buf_len > 2 * rsa->sizeof_g_packet)

    error (_(Remote g’ packet reply is too long: %s), rs->buf);

修改为: 

  if (buf_len > 2 * rsa->sizeof_g_packet)
  {
	  rsa->sizeof_g_packet = buf_len;
	  for(i = 0; i < gdbarch_num_regs(gdbarch); i++)
	  {
		if(rsa->regs[i].pnum == -1)
			continue;
		if(rsa->regs[i].offset >= rsa->sizeof_g_packet)
			rsa->regs[i].in_g_packet = 0;
		else
			rsa->regs[i].in_g_packet = 1;
	  }
	  //error (_("Remote 'g' packet reply is too long: %s"), rs->buf);
  }

然后重新编译、安装即可!

参考网址:http://hi.baidu.com/285988185/item/33cc0e047be026e6fe240d4c



你可能感兴趣的:(Fedora12上编译安装gdb-7.2)