From 66115db831789ad48fd1894ef991a257cc07c570 Mon Sep 17 00:00:00 2001 From: acevest Date: Sat, 5 Feb 2022 04:11:35 +0000 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E6=94=B9Makefile=E4=BD=BF=E4=B9=8B?= =?utf8?q?=E8=83=BD=E5=9C=A8MacOS=20Apple=20Silicon=E7=9A=84Docker=20Linux?= =?utf8?q?=E4=B8=8B=E7=BC=96=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- bin/Makefile | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/bin/Makefile b/bin/Makefile index 4b76644..013ad00 100644 --- a/bin/Makefile +++ b/bin/Makefile @@ -1,4 +1,30 @@ -CC = gcc +OS := $(shell uname -s) +CPU_ARCH := $(shell uname -p) + +CC = gcc +LD = ld +ifeq ($(OS), Darwin) + # MacOS下安装i686-elf-*的方法: brew install i686-elf-binutils + # Apple Silicon + ifeq ($(CPU_ARCH), arm) + CC = i686-elf-gcc + LD = i686-elf-ld + # Intel MacOS + else ifeq ($(CPU_ARCH), i386) + CC = i686-elf-gcc + LD = i686-elf-ld + endif +else ifeq ($(OS), Linux) + # Apple Silicon Docker Linux + ifeq ($(CPU_ARCH), aarch64) + CC = x86_64-linux-gnu-gcc + LD = x86_64-linux-gnu-ld + endif +endif + + + +CFLAGS = -g -c -fno-builtin -m32 -DBUILDER='"$(shell whoami)"' LDFLAG = -e _start CFLAGS = -m32 -c -I../include -fno-builtin LIBC_DIRS = ../lib @@ -9,11 +35,11 @@ BINS := shell hello all:$(BINS) shell: shell.o - gcc $(CFLAGS) shell.c -o shell.o - ld -m elf_i386 ${LIBC_OBJS} shell.o -o shell + $(CC) $(CFLAGS) shell.c -o shell.o + $(LD) -m elf_i386 ${LIBC_OBJS} shell.o -o shell hello: hello.o - gcc $(CFLAGS) hello.c -o hello.o - ld -m elf_i386 $(LIBC_OBJS) hello.o -o hello + $(CC) $(CFLAGS) hello.c -o hello.o + $(LD) -m elf_i386 $(LIBC_OBJS) hello.o -o hello .PHONY:clean -- 2.44.0