EFI_ARCH = x86_64 EFIINC = /usr/include/efi EFIINCS = -I$(EFIINC) -I$(EFIINC)/$(EFI_ARCH) -I$(EFIINC)/protocol LIB = /usr/lib EFILIB = /usr/lib EFI_CRT_OBJS = $(EFILIB)/crt0-efi-$(EFI_ARCH).o EFI_LDS = $(EFILIB)/elf_$(EFI_ARCH)_efi.lds all: gcc $(EFIINCS) -fpic -ffreestanding -fno-stack-protector -fno-stack-check -fshort-wchar -mno-red-zone -maccumulate-outgoing-args -c main.c -o main.o ld -shared -Bsymbolic -T $(EFI_LDS) -L $(EFILIB) $(EFI_CRT_OBJS) main.o -o main.so -lefi -lgnuefi objcopy -j .text -j .sdata -j .data -j .rodata -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .reloc --output-target efi-app-x86_64 --subsystem=10 main.so main.efi