這幾天開始作畢業設計了,MPEG2解碼的MIPS實現,代碼啥的網上一大堆,最大的困難也許不是理解代碼,而是搭建環境,也就是搭建mips-linux-gcc交叉編譯的環境。linux
網上鋪天蓋地的都是arm-linux-gcc工具鏈的教程,惟獨MIPS這一塊資料非常匱乏,就連極少數的幾篇講搭建工具鏈的博文都是互相copy的。服務器
兩天一晚上,終於把工具鏈給搞定了,期間的痛苦也只有本身能體會,那是一種在茫茫大海中尋求救援的無助感。每次碰到問題,問谷歌或百度大部分回答都是 牛頭不對馬嘴,有些人可能相對嚴謹的解決,但也不能作到面面俱到。事實上,對於咱們這種新手,最大的幫助就是面面俱到:對可能遇到的問題都有合理的解釋和 解決方法。但實際中,每每是爲了解決一個小問題,反而引來許多一連串莫名其妙的問題,非常撓人。架構
廢話就這麼多。工具
下面介紹我本次安裝交叉編譯工具鏈的過程。測試
起初試了傳說中高端牛逼的buildroot工具,該工具可以配置各類硬件平臺的編譯工具、交叉編譯工具鏈等等,只有你想不到,沒有它作不到,可是 高端的工具每每會帶來一個反作用:低端人士基本不會用。我就是活生生的例子,從昨天上午8點30分開始,一直到下午5點,期間不吃不喝幾乎都忘了上廁所, 最後仍是沒搞出來。後來相繼嘗試了許多方法,也都以失敗了結。ui
最後沒辦法,決定直接用別人作好的工具鏈, ftp://ftp.linux-mips.org/pub/linux/mips/people/macro/RPMS 在這個ftp服務器上,我找到了我須要的工具設計
首先咱們的PC機是i386架構的,因此就進i386的目錄下,code
這裏有許多mips打頭的rpm包,這些就是咱們須要的工具鏈!教程
這時咱們能夠根據你所使用的mips處理器是大端或小端來下載所需的工具,大端的工具都是以mips開頭的,而小端都是以mipsel開頭。ip
最後咱們須要下載的是這幾個包:
mips-linux-binutils-x.xx.x-x.i386.rpm
mips-linux-gcc-x.xx.x-x.i386.rpm
mips-linux-gcc-c-x.xx.x-x.i386.rpm
mips-linux-gcc-cpp-x.xx.x-x.i386.rpm
mips-linux-sim-x.xx.x-x.i386.rpm
這幾個工具裝好以後,咱們就能夠寫個helloworld測試一下了:
#include <stdio.h> void main() { printf("Hello World!\n"); }
而後執行:
mips-linux-gcc hello.c -o hello
編譯失敗了。提示說找不到stdio.h,這是由於咱們PC上並無對應mips的動態連接庫,因此咱們編譯的時候還須要加上靜態選型
mips-linux-gcc -g hello.c -o hello -static
可是執行這句後,咱們仍是失敗了。
提示仍是老樣子。
解決辦法:咱們還需下載一個靜態庫文件的包,有了這個包,咱們的靜態編譯才能經過。
在ftp://ftp.linux-mips.org/pub/linux/mips/people/macro/RPMS/noarch/下面找到
mips-linux-glibc-devel-x.x.xx.noarch.rpm
mips-linux-glibc-static-x.x.xx.noarch.rpm
安裝完這兩個以後就大功告成了,從新執行上面的編譯命令,成功編譯出可執行文件。固然,這個可執行文件得用mips仿真器才能運行。