程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> ubuntu12.04.2下用crosstool-NG制作交叉編譯工具鏈

ubuntu12.04.2下用crosstool-NG制作交叉編譯工具鏈

編輯:關於C語言

   近兩周來,下班之後一有空就搞這個事,昨晚終於弄完了。

   crosstool-NG官網:http://crosstool-ng.org/

   開始是准備在cygwin上做的,官網說得含糊,大概是說基本支持得挺好,又說會有一些怪事發生There still are quirks to work around)。先不信這個邪,因為在cygwin上編譯過ecos,都挺順的。但是真的出現一些錯誤,把cygwin都重裝了兩遍了,所有開發工具都選上,最後還是失敗告終。

   於是決定裝ubuntu,下載的是12.04.2的版本。也不想用vmware來搞了,以前自己從來沒把vmware弄好過,在samba這裡失敗,一直配不好,後來還是直接用了公司已經配好的用。現在又不玩游戲了,用電腦就是看電影上網寫東西這類事情,ubuntu都可以干得很好,差不多可以替代windows。裝個雙系統,平時就都用ubuntu得了,萬不得已才進win 7。

   把e盤分了20G出來用來裝ubuntu。以前一裝系統就要刻光盤,其實用UltraISO就可以把操作系統鏡象弄到U盤裡去,BIOS設成從U盤啟動,安裝過程就跟用光驅動安裝是一樣的了。

   安裝好傻瓜,有個選項選了windows與ubuntu共存之後,連分區都不用選了,裝完重啟就可以選是進ubuntu還是進win 7了。

   按照crosstool-NG官網的說明一步步進行:

wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-VERSION.tar.bz2
tar xjf crosstool-ng-VERSION.tar.bz2
cd crosstool-ng-VERSION
./configure --prefix=/some/place
make
make install
export PATH="${PATH}:/some/place/bin"

這中間碰到了好多問題,在網上搜索一一解決,列表如下

沒有bison :

   sudo apt-get install bison flex


沒有gperf :

   sudo apt-get install gperf


沒有*info,這裡忘了具體是什麼錯誤,最後四個字母是info :

   sudo apt-get install texinfo


沒有GNU awk:

   sudo apt-get install gawk


沒有libtool:

   sudo apt-get install libtool


沒有automake:

   sudo apt-get install automake


沒有curses header:
   sudo apt-get install libncurses5-dev


在make install時候,提示不能是root用戶。因為我把./configure --prefix=/some/place設成了在/etc裡,普通用戶無權限,就用root用戶。這個地方卡了兩天,在網上相關的東西少。後來我把/some/place改成自己的home目錄下,就正常了。


ubuntu12.04.2的普通用戶PATH在HOME目錄下的.profile裡更改,免得每次打開終端都要用export



mkdir /a/directory/to/build/your/toolchain
cd /a/directory/to/build/your/toolchain
ct-ng arm-unknown-linux-gnueabi
ct-ng build


這個過程也有一些問題要解決


Missing: 'i686-pc-linux-gnu-gcj' or 'i686-pc-linux-gnu-gcj' or 'gcj' : either needed!
用sudo apt-get install gcj,說已安裝,換了幾個源,也還是不行,後來
解決:sudo apt-get install gcj-jdk

Missing: 'i686-pc-linux-gnu-g++' or 'i686-pc-linux-gnu-g++' or 'g++' : either needed!
解決:sudo apt-get install g++

在Retrieving 'linux-3.7.3'的地方卡了挺久,開始以為是又缺哪個,試了幾種方法都不行,想到這裡說在獲取,可能是在網上下載吧,比較慢一點,就去健身房了讓它一直在運行,後來回來時這一步已經裝好了。

裝到第92分鐘時,裝cross-gdb,出現[ERROR]    
configure: error: expat is missing or unusable
[ERROR]    make[2]: *** [configure-gdb] Error 1
[ERROR]    make[1]: *** [all] Error 2
解決:sudo apt-get install libexpat1-dev  

ct-ng build的過程花了兩三個小時,最後裝好。按下面的路徑修改PATH,就可以正常用了


export PATH="${PATH}:${HOME}/x-tools/arm-unknown-linux-gnueabi/bin"
arm-unknown-linux-gnueabi-gcc

本文出自 “徐庶高順” 博客,請務必保留此出處http://mantis.blog.51cto.com/5044560/1275344

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved