平台:tq2440
GCC: gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176)
這里過程中參考了下面兩篇博文:
http://blog.csdn.net/hejianhua/article/details/7254836
http://blog.csdn.net/fly_qj/article/details/8272555
1、下載gdb
下載地址為:http://ftp.gnu.org/gnu/gdb/
我們以gdb-7.9.tar.xz 這個文件為例。
2、安裝軟件包
- textinfo
否則會提示makeinfo找不到。
安裝方法:
sudo apt-get install textinfo
- libncurses5-dev
否則會出現如下錯誤:
configure: WARNING: no enhanced curses library found; disabling TUI checking for library containing tgetent... no configure: error: no termcap library found make[1]: *** [configure-gdb] Error 1
安裝方法:
解決這個問題需要自己去新下載一套ncurses的最新代碼,重新交叉編譯出來,再拷到交叉gcc的庫默認搜索路徑下去就能解決。 wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.8.tar.gz
tar xvf ncurses-5.8.tar.gz cd ncurses-5.8 ./configure --prefix=/root/work/tq2440/tools/gdb/ncurses-5.8/bin --host=arm-linux CC=arm-linux-gcc
make&&make install cd bin cp -rf lib/*/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/usr/lib/ cp -rf include/* /opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/usr/include
3、編譯安裝gdb和gdbserver
- 目錄結構
. ├── gdb # 存放編譯產生的arm-linux-gdb可執行程序 ├── gdb-7.9 # gdb和gdbserver的源碼目錄 ├── gdb-7.9.tar.xz ├── gdb_build # 編譯gdb時的中間編譯文件 ├── gdbserver # 存放編譯生成的arm-linux-gdbserver可執行程序 ├── gdbserver_build # 存放編譯gdbserver時的編譯結果 ├── ncurses-5.8 └── ncurses-5.8.tar.gz
- 編譯安裝gdb
cd gdb_build ../gdb-7.9/configure --target=arm-linux --program-prefix=arm-linux- --prefix=/root/work/tq2440/tools/gdb/gdb make
make install
注:--target=arm-linux意思是說目標平台是運行於ARM體系結構的linux內核;--program-prefix=arm-linux-是指生成的可執行文件的前綴,比如arm-linux-gdb,--prefix是指生成的可執行文件安裝在哪個目錄,這個目錄需要根據實際情況作選擇。如果該目錄不存在,會自動創建,當然,權限足夠的話。
生成的可執行程序存放在/root/work/tq2440/tools/gdb/gdb下:
gdb ├── bin │ ├── arm-linux-gdb │ └── arm-linux-run ├── include │ └── gdb ├── lib │ └── libarm-linux-sim.a └── share ├── gdb ├── info ├── locale └── man
可以對生成的arm-linux-gdb進行strip
strip arm-linux-gdb -o arm-linux-gdb-stripped
- 編譯安裝gdbserver
cd gdbserver_build ../gdb-7.9/gdb/configure --target=arm-linux --host=arm-linux --prefix=/root/work/tq2440/tools/gdb/gdbserver cd gdbserver make
make install
最后生成的可執行程序存放在/root/work/tq2440/tools/gdb/gdbserver目錄下
gdbserver └── bin └── arm-linux-gdbserver
可以對arm-linux-gdbserver進行strip
arm-linux-strip gdbserver -o gdbserver-stripped
注意,這里必須使用strip的交叉版本,也就是arm-linux-strip。
到此,我們生成了兩個重量級別的文件:arm-linux-gdb和gdbserver。它們的版本是一致的,這一點非常重要。我們需要將gdbserver下載到開發板中,——可以通過各種各樣的手段,包括但不限於NFS。調試時需要在開發板中運行這個程序。同時在主機中執行arm-linux-gdb調試器。
下面是我編譯出的arm-linux-gdbserver和arm-linux-gdb,可以用於tq2440遠程調試:
http://files.cnblogs.com/files/pengdonglin137/tq2440_arm-linux-gdb%26arm-linux-gdbserver.7z
完。