虛擬機 : vmware 12 linux
image: ubuntukylin 14.04.1 ubuntu
系統版本:Linux dancy 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:12 UTC 2014 i686 i686 i686 GNU/Linux工具
虛擬機安裝好以後,安裝一下基本的工具環境ui
sudo apt-get updatees5
sudo apt-get install build-essentialspa
arm交叉編譯工具鏈: arm-none-linux-gnueabi , 下載地址 http://www.veryarm.com/cross-tools ,選擇 2012.09 月的版本ip
gdb 源碼下載地址: http://ftp.gnu.org/gnu/gdb/ci
我下載了 gdb-7.4.1.tar.bz2 ,解壓進入代碼目錄:get
./configure --host=arm-none-linux-gnueabi源碼
貌似很正常,開始make
然而過了一會,就會出現
configure: WARNING: no enhanced curses library found; disabling TUI
checking for library containing tgetent... no
configure: error: no termcap library found
網上找了不少方法,都無論用
好比安裝ncurses庫: sudo apt-get install libncurses5-dev, 裝了也沒用
好比下載 termcap-1.3.1.tar.gz 編譯 放入到 工具鏈的 /lib目錄,好比 /home/arm-2012.09/arm-none-linux-gnueabi/lib 也是沒用的,因而我仔細的想上面的錯誤信息,在configure的過程裏,應該首先是使用ncurses庫,沒找到呢,也不會繼續找termcap庫,因此
下載 ncurses-5.5-tar.gz 編譯安裝以下,這個問題總算解決了。
下載地址: http://ftp.gnu.org/gnu/ncurses/
./configure --host=arm-none-linux-gnueabi --prefix=/home/arm-2012.09/arm-none-linux-gnueabi
make
make install
這個時候,再去make gdb就不會出上面的錯誤了,然而事情並不會那麼簡單,後面會繼續出現新的問題。
In file included from arm-linux-nat.c:25:0:
linux-nat.h:79:18: error: field 'siginfo' has incomplete type
arm-linux-nat.c: In function 'arm_linux_stopped_data_address':
arm-linux-nat.c:1141:23: error: dereferencing pointer to incomplete type
arm-linux-nat.c:1144:16: error: dereferencing pointer to incomplete type
arm-linux-nat.c:1145:20: error: dereferencing pointer to incomplete type
arm-linux-nat.c:1157:46: error: dereferencing pointer to incomplete type
這裏應該是源碼跟linux系統的頭文件匹配不上啦,有人建議修改這個siginfo爲siginfo_t這個結構體,可是我以爲不必去修改了,直接下載了 gdb-7.6.1.tar.gz 編譯OK
編譯命令:
./configure --host=arm-none-linux-gnueabi
make
make install
而後在源碼的gdb目錄就能夠看到gdb可執行文件:
dancy@dancy:~/downloads/gdb-7.6.1/gdb$ file gdbgdb: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped