Makefile Bootloader+Kernel zusammenhängen
-
Hallo!
Ich möchte unter Linux mit meinem Makefile sowohl einen Bootloader, als auch den Kernel kompilieren.
Nun ist es möglich, in der Shell alles zu automatisieren.
nasm kernel.asm -f bin -o kernel.bin
nasm boot.asm -f bin -o boot.bin
cat boot.bin kernel.bin > OS.binUm das Projekt jedoch in einer IDE zu integrieren, ist es nötig, ein Makefile zu erstellen.
all: nasm kernel.asm -f bin -o kernel.bin nasm boot.asm -f bin -o boot.bin $(shell cat boot.bin kernel.bin > OS.bin)
Output:
cat: boot.bin: Datei oder Verzeichnis nicht gefunden
cat: kernel.bin: Datei oder Verzeichnis nicht gefunden
nasm kernel.asm -f bin -o kernel.bin
nasm boot.asm -f bin -o boot.bin*Problem: Offensichtlich wird das Shell Command VOR dem Erstellen von kernel.bin und boot.bin ausgeführt.
Warum? Ich hab es ja danach geschrieben.
Wie ist es möglich, die zwei Dateien mittels Makefile zu einer zusammenzuhängen, welche ich dann in Bochs laden kann?
-
Du scheinst Leerzeichen zum Einrücken zu verwenden. Das ist in Makefiles nicht zulässig. Eventuell ist das die Ursache?
-
$(shell ...)
sorgt dafür, dass ein Kommando beim Interpretieren der Makefile ausgeführt wird. Du willst hingegen, dass das Kommando beim Erstellen von "all" ausgeführt wird. Dazu solltest du den Befehl genauso wie den Aufruf von nasm schreiben (cat ist nämlich genauso ein Programm wie nasm).all: nasm kernel.asm -f bin -o kernel.bin nasm boot.asm -f bin -o boot.bin cat boot.bin kernel.bin > OS.bin