这几天开始作毕业设计了,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仿真器才能运行。