MacOS环境-手写操作系统-19-编译自动化 原创

编译自动化

1.简介

因为原文章的老师 编译环境是:mac + ubuntu

而我的环境是: mac (当前是MacOS BigSur)

2.makefile

因为我是本地的mac环境 所以对源代码进行了一些修改

makefile

ckernel_u.asm : ckernel.o
	./objconv -fnasm ckernel.o ckernel_u.asm
ckernel.o : write_vga_desktop.o win_sheet.o mem_util.o
	i386-elf-ld -m elf_i386 -r write_vga_desktop.o mem_util.o win_sheet.o -o ckernel.o
write_vga_desktop.o : write_vga_desktop.c win_sheet.c win_sheet.h mem_util.c mem_util.h
	i386-elf-gcc -m32 -fno-asynchronous-unwind-tables -s -c -o write_vga_desktop.o write_vga_desktop.c
win_sheet.o : win_sheet.c win_sheet.h
	i386-elf-gcc -m32 -fno-asynchronous-unwind-tables -s -c -o win_sheet.o win_sheet.c
mem_util.o : mem_util.h mem_util.c
	i386-elf-gcc -m32 -fno-asynchronous-unwind-tables -s -c -o mem_util.o mem_util.c

cd到当前的项目路径下

输入 make 回车

里边的命令就执行完成(至于怎么完成 自己可以查一下 我就不多废话了)

3.java打包

在java中 会对 反汇编源码文件里带有global , extern, SECTION等关键字的语句进行自动删除

同时对 跳转指令后面的目的地所在的距离跟当前指令的距离超过了127个字节 的问题也进行了修复

(我本地是没有跳转的这个问题的 加上也无所谓)

我当前环境运行java打包 出现nasm无法使用的问题

这里给它nasm的绝对路径

至于怎么找自己的路径:

which nasm

返回的就是你本地的路径了(应该和我的一样)

CKernelAsmPrecessor中的createKernelBinary方法

Process process = Runtime.getRuntime().exec("/usr/local/bin/nasm -o kernel.bat kernel.asm");
readProcessOutput(process);

修改之后 运行java 打包 就打包完成了

4.运行流程

我们编写完代码后

make 回车

运行java

装载img

便可以了 是不是简化了很多繁琐的操作?

在这里插入图片描述

posted @   武子康  阅读(0)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示