自己动手写CPU(3)虚拟机和GNU工具链的安装不坑版+如何利用GNU交叉编译

本博客内容基于《自己动手写CPU》这本书

上一篇博客介绍了实现一条ori指令,但用到的寄存器初始化文件是已经写好了的,下面我们学习如何利用CNU工具链交叉编译。

虚拟机和GNU工具链的安装

虚拟机的安装

虚拟机安装教程

上面是我安装虚拟机看的博客,绝对不坑!按照这个教程就可以安装管理虚拟机的软件,其中vmware workstation是收费的,而vmware player是免费的,我们暂且应该也不需要用到太多功能,下载vmware player就可以。

ubuntu图形版

ubuntu镜像文件从这里下载,也是wnf提供的网址。

安装成功之后,安装VMware Tool

共享文件夹

主机与虚拟机之间传递文件要用到的,在这里我们解压文件需要共享文件夹。

共享文件夹的实现

不用看完,下面“2 samba服务器的搭建”与我们无关。

GNU工具链的安装

这个我真的踩了n多的坑,甚至中间还差点要放弃,最后看了 安装GNU工具链 才完成工具链的安装。

利用GNU交叉编译

首先按照书中内容编写汇编文件

编译汇编代码

mips-sde-elf-as -mips32 inst_rom.S -o inst_rom.o

将编译得到的可重定位目标文件(二进制)通过链接转化为可执行文件

按照书中编写链接描述脚本

mips-sde-elf-ld -T ram.ld inst_rom.o -o inst_rom.om

得到.bin文件

mips-sde-elf-objcopy -O binary inst_rom.om inst_rom.bin

格式转化

./Bin2Mem.exe -f inst_rom.bin -o inst_rom.data

编写Makefile文件

为得到存储器初始化文件,我们每次都需要输入4条命令,有点麻烦。这时候就需要Makefile文件,有了Makefile文件我们就可以在shell中输入以下指令就可以完成所有过程

make all

简单介绍一下Makefile文件(书中)

该文件前半部分定义一些变量,比如将CC定义为(mips-sde-elf-as)其实如上述提到的编译代码,后半部分定义了目标,采用的语法

目标: 依赖文件

             命令

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值