GDB compile with arm-none-linux-gnueabi Howto
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
/
下載文檔做參考。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.