]> Zhao Yanbai Git Server - kernel.git/commitdiff
Merge branch 'dev/2410/vfs'
authoracevest <zhaoyanbai@126.com>
Fri, 26 Dec 2025 14:33:59 +0000 (22:33 +0800)
committeracevest <zhaoyanbai@126.com>
Fri, 26 Dec 2025 14:33:59 +0000 (22:33 +0800)
1  2 
Makefile

diff --cc Makefile
index c38bbfd591503705bdffddc0f5432b8f8c1eb4d9,d9eaef22ab6057b8018a3db022efb43a544fa2ff..76626ec1fba0abe222bfa26a5e9b173af636a5e3
+++ b/Makefile
@@@ -1,44 -1,60 +1,60 @@@
  OS := $(shell uname -s)
- CPU_ARCH := $(shell uname -p)
+ CPU_ARCH := $(shell uname -m)
  
  ifeq ($(OS), Darwin)
 -      # MacOS下安装i686-elf-*的方法: brew install i686-elf-binutils
 +      # MacOS下安装i686-elf-*的方法: brew install i686-elf-binutils i686-elf-gcc
        # Apple Silicon
-       ifeq ($(CPU_ARCH), arm)
-               CROSS_PREFIX = i686-elf-
+       ifeq ($(CPU_ARCH), arm64)
+               CROSS_PREFIX := i686-elf-
        # Intel MacOS
        else ifeq ($(CPU_ARCH), i386)
-               CROSS_PREFIX = i686-elf-
+               CROSS_PREFIX := i686-elf-
        endif
  else ifeq ($(OS), Linux)
-       # Apple Silicon Docker Linux
-       ifeq ($(CPU_ARCH), aarch64)
-               CROSS_PREFIX = x86_64-linux-gnu-
+       ifeq ($(CPU_ARCH), x86_64)
+               CROSS_PREFIX :=
+       else ifeq ($(CPU_ARCH), i686)
+               CROSS_PREFIX :=
+       else ifeq ($(CPU_ARCH), aarch64)
+               # Apple Silicon Docker Linux
+               CROSS_PREFIX := x86_64-linux-gnu-
+       else
+               $(warning "检测到未知架构 $(CPU_ARCH) 请确保已安装32位x86工具链")
+               CROSS_PREFIX :=
        endif
  endif
  
  
- CC                    = $(CROSS_PREFIX)gcc
- LD                    = $(CROSS_PREFIX)ld
+ CC            := $(CROSS_PREFIX)gcc
+ LD            := $(CROSS_PREFIX)ld
  
- CFLAGS                = -g -c -fno-builtin -m32 -DBUILDER='"$(shell whoami)"' -std=gnu11
+ ifeq (,$(shell which $(CC) 2>/dev/null))
+     $(error "编译器 $(CC) 未找到 请安装交叉编译工具链")
+ endif
 -CFLAGS        := -g -c -fno-builtin -m32 -DBUILDER='"$(shell whoami)"'
++CFLAGS        := -g -c -fno-builtin -m32 -DBUILDER='"$(shell whoami)"' -std=gnu11
  # 指示编译器禁止生成位置无关代码
- CFLAGS     += -fno-pic
+ CFLAGS        += -fno-pic
  # 指示编译器在生成目标文件时不省略函数调用栈帧指针: frame pointer
- CFLAGS     += -fno-omit-frame-pointer
+ CFLAGS        += -fno-omit-frame-pointer
  # 禁用控制流保护: Control-Flow Enforcement Technology (CET)
- CFLAGS     += -fcf-protection=none
- CFLAGS     += -DNR_TTYS=3
- CFLAGS     += -DFIXED_SYSENTER_ESP_MODE=1
- CFLAGS     += -DENABLE_BOOT_WAIT=0
- CFLAGS     += -DENABLE_CLOCK_IRQ_WAIT=0
+ CFLAGS        += -fcf-protection=none
+ CFLAGS        += -DNR_TTYS=3
+ CFLAGS        += -DFIXED_SYSENTER_ESP_MODE=1
+ CFLAGS        += -DENABLE_BOOT_WAIT=0
+ CFLAGS        += -DENABLE_CLOCK_IRQ_WAIT=0
+ SYSTEMMAP     := System.map
+ KERNELBIN     := KERNEL.ELF
+ LINKSCRIPT    := scripts/link.ld
  
- SYSTEMMAP     = System.map
- KERNELBIN     = KERNEL.ELF
- LINKSCRIPT    = scripts/link.ld
+ LDFLAGS       := -z noexecstack
+ LDFLAGS       += -m elf_i386
+ LDFLAGS += -M
+ LDFLAGS += -T$(LINKSCRIPT)
  
- SRC_DIRS = boot mm lib fs kernel drivers
- INC_DIRS = include drivers boot mm fs
+ SRC_DIRS      := boot mm lib fs kernel drivers
+ INC_DIRS      := include drivers boot mm fs
  
  CFLAGS += ${INC_DIRS:%=-I%}