1. 程式人生 > >debain實現交叉編譯gdb和gdbserver

debain實現交叉編譯gdb和gdbserver


        最近工作比較忙,終於用休息時間了,就寫點東西吧, 在進入主題之前,我先聊聊歐洲盃義大利對德國的比賽(我不是一個足球迷,有一個朋友是一個足球迷,被他拉著看的),當巴神打進 第二個球時有一個鏡頭上有個球迷掉下眼淚,我為足球的魅力縮感動,也為這個偉大的運動所感到。

       最近在arm板子上做開發,遇到記憶體問題,本人習慣用emacs中gdb遠端除錯, 找了半天沒有交叉編譯工具連上沒有找到gdb不知道海思SDK為什麼為什麼沒有所以只好自己手動編譯一個了, 想記錄下自己編譯過程,希望和大家一起分享。

1、下載gdb:
下載地址為:
http://ftp.gnu.org/gnu/gdb/

我們以gdb-7.2.tar.bz2 這個檔案為例。


2、解壓縮:

      tar jxvf gdb-7.2a.tar.bz2
3、進入該目錄:
      cd gdb-7.2

4、配置:

      ./configure --target=arm-linux --program-prefix=arm-linux- --prefix=/home/horst/gdb-build

:--target=arm-linux意思是說目標平臺是運行於ARM體系結構的linux核心;--program-prefix=arm-linux-是指生成的可執行檔案的字首,比如arm-linux-gdb,--prefix是指生成的可執行檔案安裝在哪個目錄,這個目錄需要根據實際情況作選擇。如果該目錄不存在,會自動建立,當然,許可權足夠的話。

5、編譯、安裝

    mak;mak install
幸運的話,會在--prefix指定的目錄下生成三個子目錄:bin、lib、share,我們需要的arm-linux-gdb就在其中的bin目錄下。

你可以呼叫strip將它變小一些,哈哈那就看看你自己了。。。。。

1、在剛才那個gdb解壓後的目錄:gdb-7.2,進入./gdb/gdbserver子目錄

2、配置

$ ./configure --target=arm-linux --host=arm-linux

這裡的--host指定了生成可執行檔案執行的平臺和系統:運行於ARM平臺的Linux系統
3、編譯

make CC=arm-hisiv100ntp-linux-gcc

make可能出錯,可以將生成的config.h檔案中

#define HAVE_SYS_REG_H 1
註釋掉就行了
同樣你可一減小它的體積
$ arm-hisiv100ntp-linux-strip gdbserver -o gdbserver-stripped 
$ ls -lh | grep gdbserver
任務完成你就可以工作了