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

2023-05-16

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

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 ,完美运行,也输出了想要的结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

centos8 mips交叉编译环境搭建(保姆级教程) 的相关文章

  • MIPS - 实现二叉搜索树

    作为我们的术语项目 我们正在实现一个二叉搜索树 其背后的想法如下 假设 bst 有 3 个节点 10 8 14 其地址表示如下 值 左节点地址 右节点地址 根节点地址 t 400 8 0 0 620
  • MIPS 汇编中的奇怪跳跃

    我可能在这里遗漏了一些非常明显的东西 但我已经一遍又一遍地讨论这个问题 而且我肯定被困住了 在下面的代码中 8仅当以下情况时才会递增 2 0 现在我仔细检查了两次和三次beq指令有效 例如 如果我将 lop 更改为 end2 它就会转到那里
  • MIPS 中括号的作用是什么?

    我一直在阅读一本介绍 MIPS 的项目书 但遇到了一个问题 书中的一行代码是lb t3 t2 我不知道括号的作用 因为在此之前 我还没有看到它们被使用过 而且本书一开始就没有提到它们 为什么代码不只是lb t3 t2 MIPS 寻址模式语法
  • 为 MIPS 编译 Linux 内核 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我有一台 32 位 MIPS 机器 想在上面运行 Linux 我需要使用我的 Windows 7 机器将 Linux 交叉编译为 MIPS 我对如何解决这个问题感到困惑 有人可以
  • 使用 while 循环遍历数组? - MIPS [重复]

    这个问题在这里已经有答案了 我想循环遍历一个数字数组 例如 word 2 2 2 2 2 2 2 2 2 2 2 2 2 word 2 2 2 2 2 2 2 2 2 2 2 2 2 word 2 2 2 2 2 2 2 2 2 2 2 2
  • MIPS $gp 寄存器

    使用有危险吗 gp注册来存储一个值 我想我的问题是真正的功能是什么 gp它是否以某种方式在幕后被调用 以便如果我使用它 事情可能会变得非常非常错误 好吧 gp 寄存器指向全局区域 习俗 http en wikipedia org wiki
  • 为什么我的 MIPS 基础转换器在当前值之后打印出前一个循环的值?

    我对 MIPS 很陌生 这让我完全困惑 我编写了一个程序来转换基数 第一次运行时效果很好 但是当它循环时 它会显示先前循环迭代中其他寄存器的值 输出如下 我已经尝试了我能想到的一切 但我没有想法 Enter a decimal number
  • MIPS - 将输入字符串与存储在内存中的字符串进行比较

    我有一个用 MIPS 编写的有效字符串比较方法 对用户输入的两个字符串进行逐位比较 但我正在尝试更新它以将第二个输入与我存储在内存中的输入进行比较 如果这两个相等 我想在其他地方使用第一个字符串 但是 我遇到了一些问题 这是我的代码 dat
  • Android SDK 管理器中的 MIPS 系统映像是什么?

    对于每个 SDK 我都有一个安装解决方案MIPS system image 它是什么 它有什么作用以及何时有人使用它 如果我不安装它会发生什么 它是什么 它是一个模拟器映像 可模拟具有 MIPS CPU 而不是 ARM 或 x86 CPU
  • MIPS 中的递归函数如何工作?

    我是 MIPS 的新手 因为我开始为大学学习 MIPS 汇编 并且在理解 MIPS 中的递归函数如何工作方面遇到了问题 例如 我有这个程序 用 C 语言 可以用 MIPS 编写 int fact int n if n lt 1 return
  • 在用 QtSpim 编译的 MIPS 中生成随机整数

    所以我看到了很多关于使用 MARS 在 MIPS 程序中生成随机整数的问题 系统调用 42没关系 问题是我需要为编译的程序生成一个随机整数QtSpim 它没有 42 或大于 17 的系统调用 我无法弄清楚从系统中获取类似随机值的东西 例如
  • MIPS:将 BEQ 计算为十六进制机器代码

    我有一个作业 必须将 MIPS 指令转换为其十六进制机器代码 我知道如何转换 add addi lw 等指令 但是当它转换为 beq 之类的指令时 我感到困惑 我如何将这个 beq 转换为十六进制 0x00400108 beq t3 t5
  • 提示用户输入汇编 ci20 seg 错误

    我目前正在 ci20 机器上开发一个小程序 提示用户输入整数值 然后将该值打印到屏幕上 我当前的代码 data prompt asciiz Please enter an integer message asciiz nValue ente
  • 为 Mips 架构编译 C

    我已经看到了几种方法来做到这一点 到目前为止我还没有尝试过几种 但我想为了方便起见隔离这个方法 应该有一种方法可以通过 VIA gcc 来做到这一点 我更喜欢这个 我只是不断碰壁 我正在使用 debian7 并且可以使用其他任何风格 我暂时
  • 简单 mips 中的无限循环

    我正在尝试了解 ra 所以我想要的输出是 mainfunction1main 通过 main 调用 function1 function1 返回到 main 然后 main 完成 但由于某种原因 我得到一个无限循环 打印 mainfunct
  • 错误:与nodejs程序连接时连接ECONNREFUSED 127.0.0.1:5432 [重复]

    这个问题在这里已经有答案了 我在 CentOS 8 机器上设置了一个 postgresql 服务器 并在同一台机器上运行了一个 js 程序 使用pg图书馆 const Pool require pg const pool new Pool
  • MIPS 中的影子寄存器是什么以及它们如何使用?

    当我了解 MIPS 架构时 我遇到了影子寄存器 据说它们是通用寄存器的副本 我无法理解以下内容 何时使用影子寄存器 MIPS 影子寄存器用于减少处理中断时的寄存器加载 存储开销 分配了影子寄存器组的中断不需要保存任何现有上下文来提供空闲寄存
  • 如何在 OS161 中添加 open 系统调用的两个变体?

    从手册页OS161 Synopsis include
  • 带有适用于 MS-Windows 的工具链的预构建 MIPS 交叉编译器

    我在我的 Linux 机器上使用 MIPS 交叉编译器 效果很好 现在我需要在 Windows 上编译相同的应用程序 我正在网上搜索一些适用于 MS Windows 的预构建 MIPS 交叉编译器 带有工具链 但没有成功 由于我不确定该怎么
  • 如何在 icarus verilog 中包含文件?

    我知道基本的 include filename v 命令 但是 我试图包含另一个文件夹中的模块 现在 该模块还包括同一文件夹中存在的其他模块 但是 当我尝试在最顶层运行该模块时 出现错误 C Users Dell Desktop MIPS

随机推荐