文档章节

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

余争
 余争
发布于 2014/03/12 17:56
字数 874
阅读 7722
收藏 5


这几天开始做毕业设计了,MPEG2解码的MIPS实现,代码啥的网上一大堆,最大的困难也许不是理解代码,而是搭建环境,也就是搭建mips-linux-gcc交叉编译的环境。

网上铺天盖地的都是arm-linux-gcc工具链的教程,唯独MIPS这一块资料很是匮乏,就连极少数的几篇讲搭建工具链的博文都是互相copy的。

两天一夜,终于把工具链给搞定了,期间的痛苦也只有自己能体会,那是一种在茫茫大海中寻求救援的无助感。每次碰到问题,问谷歌或百度大部分回答都是 牛头不对马嘴,有些人可能相对严谨的解决,但也不能做到面面俱到。事实上,对于我们这种新手,最大的帮助就是面面俱到:对可能遇到的问题都有合理的解释和 解决方法。但实际中,往往是为了解决一个小问题,反而引来许多一连串莫名其妙的问题,很是挠人。

废话就这么多。

下面介绍我本次安装交叉编译工具链的过程。

起初试了传说中高端牛逼的buildroot工具,该工具能够配置各种硬件平台的编译工具、交叉编译工具链等等,只有你想不到,没有它做不到,但是 高端的工具往往会带来一个副作用:低端人士基本不会用。我就是活生生的例子,从昨天上午8点30分开始,一直到下午5点,期间不吃不喝几乎都忘了上厕所, 最后还是没搞出来。后来相继尝试了许多方法,也都以失败告终。

最后没办法,决定直接用别人做好的工具链, ftp://ftp.linux-mips.org/pub/linux/mips/people/macro/RPMS 在这个ftp服务器上,我找到了我需要的工具

首先我们的PC机是i386架构的,所以就进i386的目录下,

这里有许多mips打头的rpm包,这些就是我们需要的工具链!

这时我们可以根据你所使用的mips处理器是大端或小端来下载所需的工具,大端的工具都是以mips开头的,而小端都是以mipsel开头。

最后我们需要下载的是这几个包:

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仿真器才能运行。


本文转载自:

共有 人打赏支持
余争

余争

粉丝 57
博文 32
码字总数 12708
作品 3
深圳
高级程序员
私信 提问
加载中

评论(2)

kingsOSZT
kingsOSZT
http://www.it165.net/os/html/201405/8236.html

你好 在按照这个搞
第五部编译glic的时候设置CC=mipsel-linux--gcc ../glibc-2.14/configure --host=$TARGET --prefix="/usr" --enable-add-ons --with-headers=$TARGET_PREFIX/include libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes 设置这里失败了 但是config.log里面什么error也没提示

请问你的这些东西搞定是不是完全就满足编译mips的目标文件呢?

我现在搞得是openwrt的插件,如果能回复下,非常感谢。
余争
余争
还有就是这种安装方式:http://crosstool-ng.org/
就是下载比较慢。
嵌入式交叉编译环境的搭建过程,图文解说

我晕,竟然图片不显示,还是看我的新浪博客吧!http://blog.sina.com.cn/s/blog_b90c3cdf0101g1p1.html 电脑系统:win7系统。虚拟机系统:workstation6.5 。虚拟机安装的linux版本:fedora9...

长平狐
2013/06/17
786
0
浅析gcc、arm-linux-gcc和arm-elf-gcc的关系

浅析gcc、arm-linux-gcc和arm-elf-gcc的关系 嵌入式开发交流群280352802,欢迎加入! 一、GCC简介 The GNU Compiler Collection,通常简称 GCC,是一套由 GNU 开发的编译器集,为什么是编辑器...

长平狐
2013/06/03
1K
1
Ubuntu12.04嵌入式交叉编译环境arm-linu-gcc搭建过程,图解

安装环境 Linux版本:Ubuntu 12.04 内核版本:Linux 3.5.0 交叉编译器版本:arm-linux-gcc-4.4.3 这个版本的交叉编译器我已经上传到了资源上,可以随便下载,点此下载 安装前的絮叨 首先简单...

长平狐
2013/06/17
6.7K
4
Linux/Mac 交叉编译 Android 程序

什么是交叉编译呢 简单地说,就是程序的编译的环境和它的运行的环境不一样。即在一个平台上生成另一个平台上的可执行代码。交叉编译的概念主要和嵌入式开发有关。 为何要有交叉编译 主要是由...

音视频直播技术专家
2017/06/29
0
0
arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别

转自http://www.veryarm.com/296.html 命名规则 交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] arch - 体系架构,如ARM,MIPS vendor - 工具链提供商 os - 目标操作系统 ...

u012142460
2017/12/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库技术-Mysql主从复制与数据备份

数据库技术-Mysql 主从复制的原理: MySQL中数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”...

须臾之余
昨天
3
0
Git远程仓库——GitHub的使用(一)

Git远程仓库——GitHub的使用(一) 一 、 Git远程仓库 由于你的本地仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要一下设置: 步骤一、 创建SSH key 在用户主目录下,看看有没有.ss...

lwenhao
昨天
0
0
SpringBoot 整合

springBoot 整合模板引擎 SpringBoot 整合Mybatis SpringBoot 整合redis SpringBoot 整合定时任务 SpringBoot 整合拦截器...

细节探索者
昨天
0
0
第二个JAVA应用

第二个JAVA应用 方法一:配置文件: # cd /usr/local/tomcat/conf/# vim server.xml</Host> <Host name="www.wangzb.cc" appBase="/data/wwwroot/www.wangzb.cc" //引用所......

wzb88
昨天
0
0
2019年阿里Java面试必问:JVM与性能优化+Redis+设计模式+分布式

前言 一年之计在于春 金三银四已经要到来,2019的新的开始,作为一个开发人员,你是否面上了自己理想的公司,薪资达到心中理想的高度? 面试:如果不准备充分的面试,完全是浪费时间,更是对...

火力全開
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部