自己动手写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)其实如上述提到的编译代码,后半部分定义了目标,采用的语法

目标: 依赖文件

             命令

猜你喜欢

转载自blog.csdn.net/weixin_52259822/article/details/124566226
今日推荐