在MacOS上运行Makefile时出现的部分错误

时间:2020-03-31 12:44:04

标签: macos makefile

运行Makefile时出现一些错误。我目前正在使用MacOS Mojave,出现一些奇怪的错误,我无法理解它们。 Makefile根本不起作用,ASPARAMS = -m32出现错误(在此之前,ASPARAMS = --32 {不工作}。现在,Makefile没有错误,但另一个文件起作用了。这是Makefile的代码:

GPPPARAMS = -m32 -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore
ASPARAMS = -m32
LDPARAMS = -melf_i386

objects = loader.o kernel.o
%.o: %.cpp
        g++ $(GPPPARAMS) -o $@ -c $<

%.o: %.s
        as $(ASPARAMS) -o $@ $<

mykernel.bin: linker.ld $(objects)
        ld $(LDPARAMS) -T $< -o $@ $(objects)

install: mykernel.bin
        sudo cp $< /boot/mykernel.bin

mykernel.iso: mykernel.bin
        mkdir iso
        mkdir iso/boot
        mkdir iso/boot/grub
        cp $< iso/boot/
        echo 'set timeout-0' >> iso/boot/grub/grub.cfg
        echo 'set default-0' >> iso/boot/grub/grub.cfg
        echo 'menuentry "My Operating System"{' >> iso/boot/grub/grub.cfg
        echo '  multiboot /boot/mykernel.bin' >> iso/boot/grub/grub.cfg
        echo ' boot' >> iso/boot/grub/grub.cfg
        echo '}' >> iso/boot/grub/grub.cfg
        grub-mkrescue --output=$@ iso
        rm -rf iso

run: mykernel.iso
        (killall VirtualBox && sleep 1) || true
        VirtualBox --startvm "My Operating System" &

以下是错误:

loader.s:5:20: error: unexpected token in '.section' directive
.section .multiboot
                   ^
loader.s:12:15: error: unexpected token in '.section' directive
.section .text
              ^
loader.s:29:15: error: unexpected token in '.section' directive
.section .bss 
              ^
make: *** [loader.o] Error 1

这是出现错误的文件:

.set MAGIC, 0x1badb002
.set FLAGS, (1<<0 | 1<<1)
.set CHECKSUM, -(MAGIC + FLAGS)

.section .multiboot
    .long MAGIC
    .long FLAGS
    .long CHECKSUM



.section .text
.extern kernelMain
.extern callConstructors
.global loader

loader:
    mov $kernel_stack, %esp
    call callConstructors
    push %eax
    push %ebx
    call kernelMain

_stop:
    cli
    hlt
    jmp _stop

.section .bss
.space 2*1024*1024;
kernel_stack:

0 个答案:

没有答案