Linux下交叉编译gdb和gdbserver
?
?平臺: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.gztar xvf ncurses-5.8.tar.gzcd ncurses-5.8./configure --prefix=/root/work/tq2440/tools/gdb/ncurses-5.8/bin --host=arm-linux CC=arm-linux-gccmake&&make installcd bincp -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
注:--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
最后生成的可執行程序存放在/root/work/tq2440/tools/gdb/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
?
?完。
轉載于:https://www.cnblogs.com/pengdonglin137/p/4751279.html
總結
以上是生活随笔為你收集整理的Linux下交叉编译gdb和gdbserver的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单片机流水灯程序[通俗易懂]
- 下一篇: 厦门自媒体协会成立啦!头部自媒体大咖都来