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