mips-linux-gcc交叉编译工具链搭建小结【转】


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

相关文章
相关标签/搜索