對於嵌入式gdb而已,分為兩種,這兩種方法的的區分是鑑於使用和編譯後的工具而言。
1、第一種是開發板上使用的gdb,就像pc機上linux系統使用gdb一樣。
2、第二種是開發板上使用單板的gdb client,pc機上使用pc版本gdb server。兩者通過網路來互動資訊實現除錯。
筆者除錯是使用的第一種,這裡也主要介紹第一種gdb的編譯方法。
ø 新增交叉編譯鏈到環境變數,即將交叉編譯鏈所在的檔案路徑加到環境變數中:
如:export path=/opt/freescale/usr/local/gcc-4.1.78-eglibc-2.5.78-dp-1/powerpc-linux-gnuspe/bin:/opt/freescale/usr/local/gcc-4.1.78-eglibc-2.5.78-dp-1/powerpc-linux-gnuspe/powerpc-linux-gnuspe/bin:$path
ø 進入gdb目錄,執行
./configure--host=powerpc-linux-gnuspe --enable-shared --prefix=/home/gdb cc=powerpc-linux-gnuspe-gcc
其中:
--enable-shared
動態編譯
--host=
用powerpc-linux-gnuspe-gcc
編譯,注意該選項不是任意自己定,而是根據交叉編譯鏈的名字取其字首,如筆者
mpc8548
交叉編譯鏈名稱為
powerpc-linux-gnuspe-gcc
則host
定義為powerpc-linux-gnuspe
--prefix=
安裝目錄
cc 表示gcc
檔名
待linux會自動配置檔案生成makefile檔案後執行make,如果沒有異常情況,經過漫長的等待之後就會正常生成單板可執行的gdb交叉編譯檔案,執行make install後在prefix定義的目錄的/home/gdb/bin目錄下就能看的生成的gdb,但往往在編譯的時候都會報下面這個錯:
make[1]: *** [configure-gdb] error 1
configure: error: no termcap library foundmake[1]: ***[configure-gdb] error 1
這是因為大多數交叉編譯鏈工具都沒有包含termcap這個lib庫,而編譯gdb需要用到這個庫的介面。需要先交叉編譯這個庫後放入到交叉編譯鏈的lib庫中。
解壓termcap包,進入termcap包以後使用/configure命令配置生成makefile:
./configure --target=
powerpc-linux-gnuspe --prefix=/home/termcap
到交叉編譯器資料夾下搜尋包含libc.a的目錄:find –name libc.a,搜尋到之後將libtermcap.a拷貝到其中,如果搜尋到多個不確定哪個目錄那就都拷貝乙份。
重新到gdb目錄執行make,然後makeinstall,/home/gdb/bin下生成的gdb是包含了gcc編譯除錯資訊的gdb,檔案比較大,執行下面命令,壓縮去除多餘除錯資訊:
#powerpc-linux-gnuspe-stripgdb -o gdb-stripped
檢查一下編出來的檔案資訊,可以看到:
#file gdb-stripped
gdb-stripped: elf 32-bit msb executable, powerpc or cisco 4500,version 1 (sysv), dynamically linked (uses shared libs), for gnu/linux 2.0.0,stripped
至此gdb交叉編譯完畢,將gdb-stripped拷貝到單板即可執行。
嵌入式 交叉編譯工具配置及編譯
目的不在如何實現交叉編譯工具配置及編譯,主要記錄一些過程中遇到的一些問題。環境 ununtu16.04 解壓縮交叉編譯器工具 記得將壓縮包拖至虛擬機器中。進入所在目錄 我放在桌面 解壓命令 tar xvzf arm linux gcc 4.5.1 v6 vfp 20101103.tgz c 注意 c...
除錯工具 嵌入式平台GDB除錯
soc ssc323 交叉編譯鏈 arm buildroot linux uclibcgnueabihf 個人測試使用的版本是 gdb 9.1 gdb編譯 mkdir gdbbuild cd gdbbuild gdb 9.1 configure target arm buildroot linux ...
嵌入式開發工具gdb和make
掌握嵌入式開發工具gdb和make的使用 1 嵌入式開發工具 gdb 2 嵌入式開發工具make 周五一天 gcc c 1.c gcc wall 1.c 檢查1.c 有沒有問題 a.out 執行 1.什麼是工程 專案?專案 多個原始檔 資源檔案構成的專案 2.如何編譯多個原始檔的 1000個原始檔,...