arm-gdb移植(編譯)

調試應用程序的時候最好有調試工具類似於PC機上的GDB和DDD。寫這篇文章的原因也是想要調試應用程序,所以決心自己作一次開發板上GDB的移植。

網上相關的文檔很多。也很精闢,在這裏做一個彙總,以備後用。

 

GDB移植:

GDB移植其實分爲兩種,兩種方法的的區分是鑑於使用和編譯後的工具而言。

1,第一種是 開發板上使用ARM版的GDB,就像PC機上使用GDB。

2,第二種是 開發板上使用ARM版的GDB Client,PC機上使用PC版本GDB Server。兩者通過網絡來交互信息實現調試。

 

不管哪種方式來調試,首先要做的總是要實現編譯工具。網上很多的資料其實都介紹瞭如何編譯GDB,以及在編譯過程中遇到的問題。

 

本文主要介紹第一種GDB的編譯以及調試的方法。 

OS          :UBUNTU 10.04

CrossTools  :arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.tar

 

編譯:

1,下載termcap-1.3.1.tar.gz

網上可以搜索到這個壓縮包的位置,在ftp://ftp.gnu.org/gnu/termcap/

可以使用IE登錄一下發現這個文件還真是很久以前的。

03/13/2002 12:00ÉÏÎç        439,416 termcap-1.3.1.tar.gz

08/17/1995 12:00ÉÏÎç        288,760 termcap-1.3.tar.gz

 

這裏使用wget命令:

wget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz

 

2,下載gdb-7.5.tar.bz2

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

gdb-7.5.tar.bz2         17-Aug-2012 13:58   20M 

 

3,編譯

(1)編譯termcap如果沒有這個lib,如果沒有這個libtermcap.a則在編譯gdb時候會報錯:

make[1]: *** [configure-gdb] Error 1

configure: error: no termcap library foundmake[1]: *** [configure-gdb] Error 1

 

解壓termcap包,進入termcap包以後使用/configure命令:

./configure --target=arm-none-linux-gnueabi --prefix=/opt/termcap

make & make install

 

第一次編譯的時候沒有注意Makefile中的內容,在config之後發現了gcc還是gcc沒有變爲

arm-none-linux-gnueabi-gcc

arm-none-linux-gnueabi-ar

arm-none-linux-gnueabi-ranlib

之後第二次編譯時候,手動修改Makefile後,再編譯。prefix路徑中有了lib include info等文件夾。在lib文件夾中得到了編譯的libtermcap.a文件。

 

有了這個a文件後copy這個文件到交叉編譯的工具使用的lib中。網上介紹了一些XXXXXXX-linux-gcc -print-file-name libc.a。在2009的交叉編譯工具上使用後發現失敗。

應該arm-none-linux-gnueabi-gcc -print-file-name=libc.a。在=後面直接加上絕對路徑。這個路徑可以使用find –name libc.a

發現在三個文件路勁下都有這個文件:

arm-none-linux-gnueabi/libc/armv4t/usr/lib/

arm-none-linux-gnueabi/libc/usr/lib/

arm-none-linux-gnueabi/libc/thumb2/usr/lib/

把編譯好的libtermcap.a分別拷貝到以上三個路徑中。不知道交叉的編譯器到底是使用的那個lib,顧全部拷貝一次。

 

2)編譯gdb,在編譯gdb時候關鍵是configure的配置腳本。

網上可以查到很多資料

--enable-shared     動態編譯

--host=                 arm-none-linux-gnueabi-gcc編譯

--prefix=              安裝目錄

--without-x           取消x windows 支持

--disable-gdbtk      取消gdbtk,應該也是圖形界面相關的

--disable-tui          取消tui 界面

--without-included-regex      關閉正則表達式庫

--without-included-gettext    去掉用於多語言處理的 gettext庫正則表達式/gettext,暫時不需要,先去掉

 

./configure --host=arm-none-linux-gnueabi --enable-shared --prefix=/output/arm --without-x --disable-gdbtk --disable-tui --without-included-regex --without-included-gettext LDFLAGS="=L /opt/ termcap/lib"

CPPFLAGS="-I /opt/ termcap/include"

LDFLAGS CPPFLAGS可以不要,應爲在交叉編譯使用的lib中已經包含了libtermcap庫。

隨後make & make install,在prefix制定的目錄下可以找到想要的文件以及文件夾:

Bin include lib share

 

編譯結束,等待上板子調試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章