Linux下交叉编译gdb和gdbserver
?
?平臺(tái):tq2440
?GCC:? gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176)
?
?這里過(guò)程中參考了下面兩篇博文:
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 這個(gè)文件為例。
2、安裝軟件包
- textinfo
否則會(huì)提示makeinfo找不到。
安裝方法:
sudo apt-get install textinfo?
- libncurses5-dev
否則會(huì)出現(xiàn)如下錯(cuò)誤:
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?
安裝方法:
解決這個(gè)問(wèn)題需要自己去新下載一套ncurses的最新代碼,重新交叉編譯出來(lái),再拷到交叉gcc的庫(kù)默認(rèn)搜索路徑下去就能解決。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
- 目錄結(jié)構(gòu)
?
- 編譯安裝gdb
注:--target=arm-linux意思是說(shuō)目標(biāo)平臺(tái)是運(yùn)行于ARM體系結(jié)構(gòu)的linux內(nèi)核;--program-prefix=arm-linux-是指生成的可執(zhí)行文件的前綴,比如arm-linux-gdb,--prefix是指生成的可執(zhí)行文件安裝在哪個(gè)目錄,這個(gè)目錄需要根據(jù)實(shí)際情況作選擇。如果該目錄不存在,會(huì)自動(dòng)創(chuàng)建,當(dāng)然,權(quán)限足夠的話。
?
生成的可執(zhí)行程序存放在/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可以對(duì)生成的arm-linux-gdb進(jìn)行strip
strip arm-linux-gdb -o arm-linux-gdb-stripped?
- 編譯安裝gdbserver
最后生成的可執(zhí)行程序存放在/root/work/tq2440/tools/gdb/gdbserver目錄下
可以對(duì)arm-linux-gdbserver進(jìn)行strip
arm-linux-strip gdbserver -o gdbserver-stripped注意,這里必須使用strip的交叉版本,也就是arm-linux-strip。
?
到此,我們生成了兩個(gè)重量級(jí)別的文件:arm-linux-gdb和gdbserver。它們的版本是一致的,這一點(diǎn)非常重要。我們需要將gdbserver下載到開(kāi)發(fā)板中,——可以通過(guò)各種各樣的手段,包括但不限于NFS。調(diào)試時(shí)需要在開(kāi)發(fā)板中運(yùn)行這個(gè)程序。同時(shí)在主機(jī)中執(zhí)行arm-linux-gdb調(diào)試器。
?
下面是我編譯出的arm-linux-gdbserver和arm-linux-gdb,可以用于tq2440遠(yuǎn)程調(diào)試:
http://files.cnblogs.com/files/pengdonglin137/tq2440_arm-linux-gdb%26arm-linux-gdbserver.7z
?
?完。
轉(zhuǎn)載于:https://www.cnblogs.com/pengdonglin137/p/4751279.html
總結(jié)
以上是生活随笔為你收集整理的Linux下交叉编译gdb和gdbserver的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 单片机流水灯程序[通俗易懂]
- 下一篇: linux中查看文件指定行的数据