centos8 mips交叉编译环境搭建(保姆级教程)

最近一直在折腾我的光猫、路由器以及学习嵌入式开发的相关知识,于是有了下面这篇文章,参考了网上很多文章,终于实现了自己的目标,简单的记录下来,名为“保姆级”其实是因为自己技术很菜,生怕写的太粗略了过段时间自己都记不起来当时是怎么实现的了。

1.下载buildroot工具链

到官网https://buildroot.uclibc.org/download.html下载,我选择了长期支持版2021.02.7

mkdir /home/buildroot
cd /home/buildroot
wget https://buildroot.uclibc.org/downloads/buildroot-2021.02.7.tar.gz

2.解压buildroot

 tar -xvf buildroot-2021.02.7.tar.gz

进入buildroot目录

cd buildroot-2021.02.7/

进行编译前的配置,(和编译系统内核很相似)

make menuconfig

出现BuildRoot的图形界面后,选择如下的参数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意需要按两次Esc键。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按三次回车后又回到此界面了,然后按两次Esc,退出此界面。

运行make命令,提示缺少g++,patch,perl,通过yum进行安装

yum install -y gcc-c++
yum install -y patch
yum install -y perl

再次make,可以往下进行了。

又是一个漫长的过程。
如果没有什么报错的话交叉编译环境就建立成功了。进入buildroot-2021.02.7/output/host/bin目录你会发现这里的许多以mipsel-开头的可执行程序就是你编译mips所需要的编译工具了。
在这里插入图片描述
话不多说,看看我们的mips编译工具是否真的好用了吗?

cd /output/host/bin
vim hello.c

编辑一个hello.c文件

#include<stdio.h>

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

使用交叉编译工具mipsel-buildroot-linux-uclibc-gcchello.c源文件进行编译。

./mipsel-buildroot-linux-uclibc-gcc hello.c -o hello

查看生成的二进制文件hello的文件格式

file hello

在这里插入图片描述
将编译生成的二进制文件hello复制到我的路由器上。

scp hello root@192.168.2.1:/tmp

在这里插入图片描述
登录路由,运行二制文件查看结果。
在这里插入图片描述
OK ,完美运行,也输出了想要的结果。

驱动器 D 中的卷是 LINUX 卷的序列号是 4471-561B D:\桌面\mips交叉编译环境 的目录 2009-10-22 20:27 <DIR> . 2009-10-22 20:27 <DIR> .. 2009-10-22 20:09 27,425,338 gcc-3.4.3.tar.bz2 2009-10-22 20:08 7,421,782 binutils-2.10.91.0.2.tar.bz2 2009-10-22 20:08 242,445 glibc-linuxthreads-2.5.tar.bz2 2009-10-22 20:10 20,544,628 glibc-2.5.tar.gz 2009-10-22 20:20 1,720 elf-machine-rela-mips.dpatch 2009-10-22 20:26 4,727 建立基于linuxMIPS交叉编译环境 .txt 6 个文件 55,640,640 字节 2 个目录 6,793,084,928 可用字节 三、构建过程 1、准备环境 目标平台: mipsel-linux(即little endian,x86也是little endian的,不懂的话自己到网上查资料吧) 安装目录: /usr/local/crossdev 源代码安装目录: /usr/local/src 注:没有的目录请自行建立。 2、准备MIPS环境的头文件 我们是在i386下编译的,但要使用MIPS的头文件定义才能正确编译MIPS交叉编译工具。这些头文件都在kernel源程序中。 cd /usr/local/src/ tar xzvf linux-2.4.2.tar.gz cd linux/ make ARCH=mips menuconfig 在"CPU selection"中, 选中"(R3000) CPU type",也可以选你实际的MIPS平台的CPU类型 在"General setup"中, 选中"Generate little endian code" make dep mkdir -p /usr/local/crossdev/mipsel-linux/include cp -r /usr/local/src/linux/include/asm-mips /usr/local/crossdev/mipsel-linux/include/asm cp -r /usr/local/src/linux/include/linux /usr/local/crossdev/mipsel-linux/include/ 3、编译binutils cd /usr/local/src/ tar xzvf binutils-2.11.90.0.31.tar.gz cd binutils-2.11.90.0.31/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev make make install export PATH=/usr/local/crossdev/bin:$PATH 4、编译自举的(bootstrap)gcc 因为这时还没有MIPS的glibc库可以使用,只能编译一个最简单的gcc,用这个gcc编译出glibc后就可以再编译一个完成的gcc了。 cd /usr/local/src/ tar xzvf gcc-3.0.2.tar.gz cd gcc-3.0.2/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev --enable-languages=c --with-newlib --disable-shared make make install 注:以上编译安装的工具已经可以直接编译MIPS的kernel(make zImage)了。 5、编译glibc 现在可以使用刚才建立的binutils和gcc来编译MIPS的glibc了。 cd /usr/local/src/ tar xzvf glibc-2.2.3.tar.gz cd glibc-2.2.3/ tar xzvf ../glibc-linuxthreads-2.2.3.tar.gz patch -p1 < ../glibc-2.2.3-mips-base-addr-got.diff CC=mipsel-linux-gcc AR=mipsel-linux-ar RANLIB=mipsel-linux-ranlib ./configure --host=mipsel-linux --prefix=/usr/local/crossdev/mipsel-linux --enable-add-ons=linuxthreads make make install 6、重新编译完整的gcc cd /usr/local/src/ rm -rf gcc-3.0.2/ tar xzvf gcc-3.0.2.tar.gz cd gcc-3.0.2/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev --enable-languages=c,c++ make make install 以上就构建好了一套自己的MIPS交叉编译环境,目录在/usr/local/crossdev下,你可以把它打包拷贝到其它i386的Linux系统下也能使用。 要使用其来交叉编译时请先加上PATH环境变量:export PATH=/usr/local/crossdev/bin:$PATH
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

alfiy

请博主喝瓶矿泉水吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值