1. 交叉编译gdb
输入以下命令生成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/
./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板的网口, 调试流媒体播放器的时候不方便。