代码改变世界

Ubuntu下搭建MIPS交叉编译环境(转)

2012-10-30 15:17  Chung-shu  阅读(2704)  评论(0)    收藏  举报

Ubuntu下搭建MIPS交叉编译环境



转载自:http://blog.csdn.net/htttw/article/details/7723528,有背景颜色的部分是我添加的说明。



1.下载:

在 http://buildroot.uclibc.org/downloads/snapshots/buildroot-snapshot.tar.bz2 下载buildroot:

tar -jxvf buildroot-snapshot.tar.bz2
cd buildroot

上面下载的是最新的版本,如果不合适,可以到http://buildroot.uclibc.org/downloads/snapshots/选择适合的版本。


2.配置buildroot:

make clean

make menuconfig

会出现和编译Linux类似的菜单选择界面,如下图:




选择第一项“Target Architecture”,改成MIPS(little endian),如下图:

选择大端(big endian)还是小端(little endian)实际上根据你的目标平台的架构来决定,此外还要选择“Target Architecture Variant”选项。



另外,选择“Toolchain”,务必将“Kernel Headers”的Linux版本改成你自己主机的Linux版本(因为我们编译出的MIPS交叉工具是需要在我们的主机上运行的),如下图,我的主机是Ubuntu 11.04的,Linux版本是2.6.38-8:



3.编译:

make

注意:

1.编译过程中必须联网,因为会下载一些压缩包存放在buildroot/dl文件夹下,比如binutils、gcc等!如下图:



2.必须事先安装好bison、flex、texinfo、ncurses等,比如我第一次编译,出现如下错误,因为我没有安装texinfo:

sudo apt-get install texinfo       就可以了:


之后就是漫长的等待了,差不多1个小时。。。


4.

编译完成后,在buildroot文件夹下多了一个output文件夹,其中就是编译好的文件:

cd buildroot/output/host/usr/bin

我们发现了mips的交叉编译工具已经生成啦~~:



5.

另外,在buildroot/output/target文件夹下,我们发现这就是我们之前选择的Linux 2.6.36-8版的busybox!如下图:



我们用file命令查看其中的某个可执行文件,如下:



我们看到,生成的文件确实是MIPS平台的,在我的x86下是无法运行的。


6.

为了以后方便使用,我们直接将其中的bin文件夹添加到环境变量中,省得我们日后输入长长的路径了。

将路径添加到~/.bashrc文件中,然后运行source命令:

source ~/.bashrc

7. 编写测试程序helloworld.c

 

#include <stdio.h>

int main(void)
{
    printf("Hello World!\n");
    return 0;
}

 

用刚刚生成的交叉编译工具编译

mips-linux-gcc -o helloworld helloworld.c

将生成的helloworld目标文件下载到目标设备中即可执行。