Makefiles unter Linux



  • Danke schön für die Tipps.
    Habe es jetzt wie folgt gemacht:
    ./makefile_linux

    all:
    	$(MAKE) -C kernel -f makefile_linux $@
    	$(MAKE) -C _stage1_bootloader -f makefile_linux $@
    	$(MAKE) -C _stage2_bootloader -f makefile_linux $@
    	@echo No errors for $@.
    
    clean:
    	$(MAKE) -C kernel -f makefile_linux $@
    	$(MAKE) -C _stage1_bootloader -f makefile_linux $@
    	$(MAKE) -C _stage2_bootloader -f makefile_linux $@
    	@echo No errors for $@.
    

    ./_stage1_bootloader/makefile_linux

    all:
    	nasm -f bin boot.asm -o boot.bin
    	@echo No errors for $@.
    
    clean:
    	rm -fv boot.bin
    	@echo No errors for $@.
    

    ./_stage2_bootloader/makefile_linux

    all:
    	nasm -f bin boot2.asm -o BOOT2.SYS
    	@echo No errors for $@.
    
    clean:
    	rm -fv BOOT2.SYS
    	@echo No errors for $@.
    

    ./kernel/makefile_linux

    SOURCES = kernel.asm $(filter-out kernel.asm ,$(wildcard *.asm *.c))
    OBJECTS = $(addsuffix .o,$(basename $(SOURCES)))
    
    ASFLAGSOBJ= -O32 -f elf
    
    CFLAGS=	-march=i386 -mtune=i386 \
    	-Werror -Wall \
    	-O2 -fomit-frame-pointer -ffreestanding -fleading-underscore \
    	-nostdlib -nostdinc -fno-builtin \
    	-fno-stack-protector \
    	-Iinclude
    
    CC = gcc
    
    LDFLAGS= -T kernel.ld -Map kernel.map -nostdinc
    LD = ld
    
    all: ckernel.sys
    	@echo No errors for $@.
    
    %.o: %.asm
    	nasm $(ASFLAGSOBJ) $< -o $@
    	@echo No errors for $@.
    
    ckernel.sys: $(OBJECTS)
    	$(LD) $(LDFLAGS) $+ -o $@
    	@echo No errors for $@.
    
    data.asm: initrd.dat
    	@echo No errors for $@.
    
    clean:
    	rm -fv *.o
    	@echo No errors for $@.
    
    #    $<		Erste Abhängigkeit
    #    $+		Liste aller Abhängigkeiten
    #    $@		Name des Targets
    

    Weitere Tipps gerne willkommen 🙂



  • Vielleicht kannst du ein paar Ideen von hier übernehmen:
    http://c-plusplus.net/forum/viewtopic-var-t-is-88418.html



  • Gibt es schon finale Versionen dieser Makefiles? Hat jemand das ganze mal auf Ubuntu Netbook Remix getestet?



  • Gamepower schrieb:

    Gibt es schon finale Versionen dieser Makefiles? Hat jemand das ganze mal auf Ubuntu Netbook Remix getestet?

    Die Makefiles sind in der finalen Version. Es sei denn, auf Ubuntu Netbool Remix gibt's Probleme damit 😉



  • Ich hab grad mal versucht PrettyOS unter 64 Bit Linux zu kompilieren. Da sind noch 2 kleine Änderungen nötig.

    - Zu den CFLAGS noch "-m32" hinzufügen
    - In das Linkerscript (kernel.ld) "OUTPUT_ARCH(i386)" hinzufügen


  • Mod

    in Rev 53 eingebaut


  • Mod

    Mein letzter Stand hier war, dass PrettyOS nun unter Linux mit 64 bit Kompilierung/Linken problemlos ablaeuft. Tobiking hatte dies in einem Versuch bestaetigt. Wie ist die allgemeine Erfahrung diesbezueglich?



  • Ich kann nichts zu 64 Bit Linux sagen, aber ich habe es gerade auf 32 Bit [Ubuntu 9.10] kompiliert. Ich habe das .tar.gz File runtergeladen und es make ausgefuehrt (also nichts veraendert).

    Leider gibt es ein kleines Problem mit dem Makefile. Das Makefile bindet ein Userprogramm ein ("HELLO.ELF"), allerdings existiert nur "hello.elf". Scheinbar sind alle Userspace Programme klein geschrieben, gibt es dafuer einen Grund (ich konnte klein geschriebene Dateien in PrettyOS nicht ausfuehren)? Sonst wuerde ich vorschlagen, dass man die Dateien umbenennt :). Dann funktioniert auch das Makefile prima.



  • Das ist das Problem was ich in http://www.c-plusplus.net/forum/viewtopic-var-t-is-261635.html angeführt hatte. Wenn man CreateFloppy2 als Parameter klein geschriebene Dateinamen übergibt werden diese auch in dem Image mit Fat12 Dateisystem klein geschrieben, was so nicht sein soll. Erhard wollte aber an dem Programm nichts ändern weil Badestrand das geschrieben hat.



  • Das Programm zu ändern, wäre ja kein Problem, der Source sollte eigentlich auch so simpel sein, dass da jeder drin rumpfuschen kann.

    Wie wär's denn, wenn wir die Binaries gleich groß-geschrieben erstellen? Sollte imho am Einfachsten sein. Ansonsten kann ich auch CreateFloppyImage umproggen, dass die Dateinamen groß werden.


Anmelden zum Antworten