当前位置: 首页 > 工具软件 > GNU Ada > 使用案例 >

GDB compile with arm-none-linux-gnueabi Howto

汝墨一
2023-12-01
1. 交叉编译gdb
 
   a).从http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.7.tar.gz 下载ncurses-5.7,解压后进入ncurses-5.7目录
       输入以下命令生成Makefile文件。
       # ./configure --host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi --prefix="$HOME/ncurses"
       然后输入make命令进行编译,使用make install将必须文件转移到$HOME/ncurses目录,然后做以下操作:
       # cp $HOME/ncurses/lib/libncurses.a      /opt/armv6/codesourcery/arm-none-linux-gnueabi/libc/usr/lib
       # cp $HOME/ncurses/include/ncurses/*  /opt/armv6/codesourcery/arm-none-linux-gnueabi/libc/usr /include/
 
   b).从ftp://ftp.gnu.org/gnu/gdb /gdb -6.8.tar.gz 下载gdb -6.8以后,解压后进入gdb -6.8目录,输入以下命令生成Makefile
       ./configure --host=arm-none-linux-gnueabi  --target=arm-none-linux-gnueabi  --disable-tui LDCFLAGS="-static"
       配置后,输入make命令进行编译,编译完成后会在gdb -6.8/gdb 目录下看到gdb 可执行程序,以免混淆,将这个交叉编译得到gdb 重命名
       为tcc-gdb ,tcc-gdb 可以直接拷贝到EVB板上调试程序。
 
    现在最新的gdb -7.0交叉编译不能通过。
 
2.在应用程序方面,需要被tcc-gdb 调试的程序必须在编译前,对 CFLAGS 变量中加入 -g -O0,并且取消掉诸如 -O、-O2、-O3等优化项。
 
   以Linux_APP为例,需要在Project/rule.mk中,将DEBUG设置成Y,再将ifeq($(DEBUG), Y)后的语句
   CFLAGS += -g -O0 -w -O
   修改为:
   CFLAGS += -g -O0 -w
 
3.在源码级调试时,需要备有源码树,再以Linux_APP为例,Linux_APP_v1.6编译后,生成Project/TCC_89XX_Output目录,此时将Linux_APP_v1.6
 
  全部拷贝到EVB板上去(会丢失连接文件),进入EVB板上的Project/TCC_89XX_Output目录,输入命令:
  
  #./tcc-gdb --args TCC_VPLAYER play -f /nand2/video/A.avi
 
  若不拷贝源码树,gdb 会找不到源码的行信息,给调试带来不便。
 
  也可以使用 NFS共享 将 PC 上的源码树目录 直接 挂接到EVB板Linux的文件系统上,但这样会占用EVB板的网口, 调试流媒体播放器的时候不方便。
 
  gdb 的调试方法可以在 http://www.gnu.org/software/gdb /  下载文档做参考。
 类似资料: