安装和mips32编译器一样,详情查看另一篇博客(这篇博客最下面有篇参考博客,强烈建议看一下,里面有关于mips编译的教学,看完那篇参考博客再看这个比较轻松):
(26条消息) 在Ubuntu虚拟机中安装GNU工具链——傻瓜版(已更新完)_NoNamePlus的博客-CSDN博客
把待会交叉编译产生的所有文件都放到一个目录下,这样方便操作
交叉编译要在同一个目录下打开终端进行操作,否则很有可能因为找不到文件而报错
下面代码可能在抄的时候有些抄错,如果运行不了的话,直接按照第五步用Makefile脚本一步到位
相关资源:
链接:https://pan.baidu.com/s/16Eky_gMjh7SlOSRU4izexg
提取码:bp5k
1.生成.o文件
sudo /install/loongarch32-unknown-elf/bin/as -mabi=ilp32 /mnt/LoongArch/inst_rom.S -o inst_rom.o
/install/loongarch32-unknown-elf/bin是我虚拟机上交叉编译器可执行文件的目录,关键在于这个as才是交叉编译的功能
不同用户不一样的地方在于,loongarch32-unknown-elf前面的那个文件目录,我是在虚拟机上直接把交叉编译链的压缩包install解压到主目录的,所以是/install/,如果你是解压到/mnt/目录下,解写成/mnt/install/.... 其他的以此类推
我的交叉编译工具链的目录(左上角那个install)——图中这个页面只需要点击桌面那个文件夹管理,之后再点击左下角的加号就可以了
2.生成.om文件
sudo /install/loongarch32-unknown-elf/bin/ld -static -T ram.ld /mnt/LoongArch/inst_rom.o -o inst_rom.om
ram.ld是链接文件,开头给的那篇博客的最下面有篇参考博客,里面有一个ram.ld,或是我网盘打包好里面有一份ram.ld自取。
3.生成.bin文件
sudo /install/loongarch32-unknown-elf/bin/objcopy --reverse-bytes=4 -O binary /mnt/LoongArch/inst_rom.om inst_rom.bin
--reverse-bytes=4表示机器指令中每四个字节反转一次,可以不加,加的话译码的结果是小端,加上的话译码的结果是大端
4.生成.data文件
./Bin2Mem.exe -f inst_rom.bin -o inst_rom.data
inst_rom.data就是一个16进制的文件了,里面的机器码以16进制的形式表现,可以直接传入Vivado中仿真
5. 用make all一键完成
把Makefile文件和.S文件放在同一个目录下(Makefile在我提供的压缩包里面有)
之后输入
make all
就可以一键生成1~4步中生成的所有文件了
我的交叉编译的文件都摆放在同一个目录(注意不是install,而是另外的新目录,我电脑上是mnt这个目录,该目录是我和宿主机的共享目录,这样方便我把文件拿出来到windows系统上用)