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

简介: 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


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


目录
相关文章
|
2月前
|
监控 Linux 云计算
Linux操作系统在云计算环境中的实践与优化###
【10月更文挑战第16天】 本文探讨了Linux操作系统在云计算环境中的应用实践,重点分析了其在稳定性、安全性和高效性方面的优势。通过具体案例,阐述了Linux如何支持虚拟化技术、实现资源高效分配以及与其他开源技术的无缝集成。文章还提供了针对Linux系统在云计算中的优化建议,包括内核参数调整、文件系统选择和性能监控工具的应用,旨在帮助读者更好地理解和应用Linux于云计算场景。 ###
44 3
|
2月前
|
存储 C语言 iOS开发
MacOS环境-手写操作系统-48-让内核从错误中恢复
MacOS环境-手写操作系统-48-让内核从错误中恢复
39 0
|
2月前
|
存储 API C语言
MacOS环境-手写操作系统-46,47-C语言开发应用程序
MacOS环境-手写操作系统-46,47-C语言开发应用程序
35 0
|
2月前
|
编译器 API C语言
MacOS环境-手写操作系统-45-C语言开发应用程序
MacOS环境-手写操作系统-45-C语言开发应用程序
47 0
|
2月前
|
小程序 iOS开发 MacOS
MacOS环境-手写操作系统-44-运行简单的程序
MacOS环境-手写操作系统-44-运行简单的程序
23 0
|
2月前
|
存储 Java iOS开发
MacOS环境-手写操作系统-43-dir命令的实现 和 文件写入
MacOS环境-手写操作系统-43-dir命令的实现 和 文件写入
31 0
|
4月前
|
关系型数据库 MySQL 数据库
【Mac os系统】安装MySQL数据库
本文详细介绍了在Mac OS系统上安装MySQL数据库的步骤,包括下载、安装、配置环境变量、启动服务、授权设置以及解决常见问题,并提供了一些常用的MySQL命令。
229 0
【Mac os系统】安装MySQL数据库
|
5月前
|
Linux 虚拟化 iOS开发
部署06--MacOS安装VMware Fusion安装
部署06--MacOS安装VMware Fusion安装
|
4月前
|
测试技术 Linux 虚拟化
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
详细的VMware虚拟机安装macOS Big Sur的保姆级教程,包括下载VMware和macOS镜像、图解安装步骤和遇到问题时的解决方案,旨在帮助读者顺利搭建macOS虚拟机环境。
162 3
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
|
4月前
|
虚拟化 数据安全/隐私保护 iOS开发
VMware——安装MacOS 系统教程(仅供学习交流)
VMware——安装MacOS 系统教程(仅供学习交流)
83 4