OK、私はメイクとメイクファイルを把握できていません。マンページを読んでみましたが、うまくいきませんでした。だから私はここに来ました:L
1 つのファイルで非常に管理されていないファイルがたくさんあります。(私はOSを作成しようとしています)そして、これらのファイルを別々のサブディレクトリに分割して(以下の構造を参照)、makeにファイルを.oファイルに「作成」し、それらを別のファイルに移動するように指示したいと思いますサブディレクトリを分離し、最終的にカーネルファイルになります。(複雑に聞こえる場合は申し訳ありませんが、うまくいけば、構造は物事をより明確にするのに役立ちます)
だから、これは私の意図した構造ツリーです:
Parent directory
( where the makefile will be )
|
|
-------------------------------------------------------------------------
| | | | |
Header SubDir Source SubDir ASM SubDir Obj SubDir Kern SubDir
(Header files ) (Source Files) (Assembly Files) (Object Files) (Kernel File)
これは私の現在のメイクファイルです:
C_SOURCES= main.c
S_SOURCES= boot.s
C_OBJECTS=$(patsubst %.c, obj/%.o, $(C_SOURCES))
S_OBJECTS=$(patsubst %.s, obj/%.o, $(S_SOURCES))
CFLAGS=-nostdlib -nostdinc -fno-builtin -fno-stack-protector -m32 -Iheaders
LDFLAGS=-Tlink.ld -melf_i386 --oformat=elf32-i386
ASFLAGS=-felf
all: kern/kernel
.PHONY: clean
clean:
-rm -f kern/kernel
kern/kernel: $(S_OBJECTS) $(C_OBJECTS)
ld $(LDFLAGS) -o $@ $^
$(C_OBJECTS): obj/%.o : %.c
gcc $(CFLAGS) $<
vpath %.c source
$(S_OBJECTS): obj/%.o : %.s
nasm $(ASFLAGS) $<
vpath %.s asem
現在、このエラーが吐き出されています:
ld -Tlink.ld -melf_i386 --oformat=elf32-i386 -o kern/kernel obj/boot.o obj/main.o
ld: cannot find obj/boot.o: No such file or directory
ld: cannot find obj/main.o: No such file or directory
事前に助けてくれてありがとう!
ジェイミー。