저는 OS에서 작업 중인데 makefile.win에서 이 오류가 발생합니다. linker.ld 출력 파일이 내가 만들고 있는 파일(mykernel.bin)의 명명 규칙과 일치하지 않는 것 같습니다. 이것이 오류의 원인인지 확실하지 않습니다. 이는 64비트 시스템용으로 제작되었습니다.
file.win 생성
ASPARAMS =
LDPARAMS = -melf_x86_64
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
링커.ld
OUTPUT_FORMAT(elf64-x86-64)
OUTPUT_ARCH(i386:x86-64)
SECTIONS
{
. = 0x100000; /* Adjust the starting address for 64-bit */
.text :
{
*(.multiboot)
*(.text*)
*(.rodata)
}
.data :
{
start_ctors = .;
KEEP(*( .init_array ))
KEEP(*(SORT_BY_INIT_PRIORITY( .init_array.* )))
end_ctors = .;
*(.data)
}
.bss :
{
*(.bss)
}
/DISCARD/ :
{
*(.fini_array*)
*(.comment)
}
}
실수
~/MyOS$ make mykernel.bin
make: *** No rule to make target 'mykernel.bin'. Stop.