项目粗略框架

打印 上一主题 下一主题

主题 897|帖子 897|积分 2691

章节团体框架

x86保护模式

项目团体工程组织架构
Makefile文件(怎么编译链接)
  1. d# 工具链前缀,如果是windows和mac,使用x86_64-elf-
  2. # 如果是linux,使用x86_64-linux-gnu-
  3. # 工具链前缀,如果是windows和mac,使用x86_64-elf-
  4. # 如果是linux,使用x86_64-linux-gnu-
  5. ifeq ($(LANG),)
  6.         TOOL_PREFIX = x86_64-linux-gnu-
  7. else
  8.         TOOL_PREFIX = x86_64-elf-
  9. endif
  10. # GCC编译参数
  11. CFLAGS = -g -c -O0 -m32 -fno-pie -fno-stack-protector -nostdlib -nostdinc #编译c文件时候给GCC传的编译相关的参数
  12. # 目标创建:涉及编译、链接、二进制转换、反汇编、写磁盘映像
  13. #创建我们最终要生成的操作系统的文件(disk.img)
  14. all: source/os.c source/os.h source/start.S
  15.         $(TOOL_PREFIX)gcc $(CFLAGS) source/start.S # 编译这个汇编文件成目标文件
  16.         $(TOOL_PREFIX)gcc $(CFLAGS) source/os.c        # 编译.c文件成目标文件
  17.         $(TOOL_PREFIX)ld -m elf_i386 -Ttext=0x7c00 start.o os.o -o os.elf #将生成的目标文件链接在一起,然后生成这个os.elf
  18.         ${TOOL_PREFIX}objcopy -O binary os.elf os.bin #将os.elf文件转成.bin文件
  19.         ${TOOL_PREFIX}objdump -x -d -S  os.elf > os_dis.txt        #因为我们有时候需要看反汇编结果,所以需要将其反汇编转为txt,好随时打开查看
  20.         ${TOOL_PREFIX}readelf -a  os.elf > os_elf.txt       
  21.         dd if=os.bin of=../image/disk.img conv=notrunc #将OS生成的二进制文件(os.bin)写到我们的磁盘文件(disk.img),这个文件会给qemu加载
  22. # 清理
  23. clean:
  24.         rm -f *.elf *.o
复制代码
当我们去启动调试的时候,就会去实验tasks.json文件
  1. {
  2.     // See https://go.microsoft.com/fwlink/?LinkId=733558
  3.     // for the documentation about the tasks.json format
  4.     "version": "2.0.0",
  5.     "tasks": [
  6.        {
  7.             "label": "启动qemu",
  8.             "type": "shell",
  9.             "command": "bash ${workspaceRoot}/script/qemu-debug-osx.sh",
  10.             "windows": {
  11.                 // windows下特殊一些
  12.                 "command": "${workspaceRoot}/script/qemu-debug-win.bat",
  13.             },
  14.             "linux":{
  15.                 "command": "bash ${workspaceRoot}/script/qemu-debug-linux.sh",
  16.             },
  17.             "options": {
  18.                 "cwd": "${workspaceRoot}/../image/"
  19.             }
  20.         },
  21.     ]
  22. }
复制代码
qemu-debug-win.bat
  1. start qemu-system-i386 -m 128M -s -S  -drive file=disk.img,index=0,media=disk,format=raw //将disk.img当作系统盘去加载OS,
复制代码
编译我们的工程

make clean就会清除make编译天生的文件

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大号在练葵花宝典

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表