在inter虛擬機上交叉編譯arm開發板上GDB調試工具

O:環境描述
  在intel32 pc虛擬機中編譯arm32開發板下gdb。

一:arm-linux的gdb分爲兩種:
1.client/server模式
 arm開發板中起gdb-client,服務器(有可能是pc機)中起gdb-server。這種不適用,因爲數據從client發送到server是有網絡延時的,所以異常跑飛的程序不能看到第一現場。

2.本地模式
該模式直接在開發板上使用調試,比較合適。本文編譯的是本地模式,但在本地模式gdb編譯的過程中,gdb-server也編譯成功了。但我們使用本地模式調試。


二:gdb編譯
1.編譯前的準備(termcap安裝)
官網下載termcap-1.3.1.tar.gz,解壓。
./configure --target=arm-linux-gnueabihf --prefix=/opt/termcap
make  && make  install
cp /opt/termcap/include/termcap.h /usr/include
cp /opt/termcap/lib/libtermcap.a /opt/gcc-linaro-7.4.1-2019.02-i686_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib   //拷貝到交叉工具鏈目錄下
 
2.編譯
官網下載:arm-linux-gdb-7.5.tar.gz,解壓。
./configure --host=arm-linux --prefix=/opt/arm-linux-gdb --enable-shared --without-x --disable-gdbtk --disable-tui --without-included-regex --without-included-gettext --disable-werror


--enable-shared    動態編譯
--host=arm-linux  用arm-linux-gcc編譯
--prefix=/opt/arm-linux-gdb 安裝目錄
--without-x     取消x windows 支持
--disable-gdbtk  取消gdbtk,應該也是圖形界面相關的
--disable-tui   取消tui 界面
--without-included-regex 關閉正則表達式庫
--without-included-gettext  去掉用於多語言處理的 gettext庫
   正則表達式/gettext,暫時不需要,先去掉
--disable-werror 關閉告警當錯誤處理


make && make install

make過程中會報gdb源碼中的函數和arm gcc頭文件中的函數重定義衝突,註銷gdb源碼中的函數。這樣目的是爲了使用arm gcc中提供的函數。這樣在arm開發板中才能無障礙運行。

三:運行
拷貝/opt/arm-linux-gdb目錄到arm開發板/opt/arm-linux-gdb,進入/opt/arm-linux-gdb/bin下運行./gdb開始調試。

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