Schreiben Sie ein makefile für das ARM-Projekt
Meine Projektstruktur sieht wie folgt aus:
.
├── build
├── src
| ├── rbpi
| | └── gpio.h
| ├── boot.c
| ├── boot.s
| └── kernel.c
└── linker.ld
Dies ist ein einfacher raspberry pi-kernel, lässt eine LED blinken!
Derzeit benutze ich eine einfache bat-Datei mit folgendem Inhalt zu bauen:
arm-none-eabi-gcc -g -O0 -mfpu=neon-vfpv4 -mfloat-abi=hard -march=armv7-a -mtune=cortex-a7 -nostartfiles -Wl,-T,linker.ld src/kernel.c src/boot.c src/boot.s -o build/kernel.elf
arm-none-eabi-objcopy build/kernel.elf -O binary build/kernel7.img
Da werde ich mehr hinzufügen, Dateien zu Projekt, hätte ich anfügen, jede Datei auf meine "buildscripts".
Wenn möglich, würde ich gerne eine makefile
.
Wie sollte mein makefile Aussehen, wenn ich möchte, die folgenden "Regeln"?
- Vor der Kompilierung, reinigen Sie alle
*.elf
und*.img
Dateien aus dembuild
Verzeichnis. - Kompilieren Sie alle
*.c
und*.s
Dateien aus demsrc
Verzeichnis. - Ausgabe der
kernel.elf
- Datei in dasbuild
Verzeichnis. - Verwenden Sie die linker-Skript
linker.ld
. - Nach der Kompilierung, Ausführung
objcopy
generiert eine binäre Datei.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einem typischen
Makefile
Aussehen könnte... Warten Sie, es gibt eine Dokumentation über GNU Make hier ein schönes, einfaches Makefile:http://www.gnu.org/software/make/manual/make.html#Simple-Makefile
So für Sie einfach starten können:
(Achten Sie darauf, die Rezepte starten mit einem tab, nicht vier Räume, wie hier, ist es wichtig für Sie zu verstehen, Ihre Datei, also kopieren-einfügen-funktioniert nicht.)
Braucht man eigentlich nicht zu löschen, elf-und img-Dateien vor dem kompilieren, das ist die GNU-Make-Rolle zu wissen, ob es für die Neuerstellung oder nicht nach Datei-änderungsdatum.
Hier ist es, zu arbeiten:
Sollten Sie wirklich einen Blick in die Dokumentation, die wirklich sehr schön ist: http://www.gnu.org/software/make/manual/make.html Sie nicht in der Lage zu Fragen auf stackoverflow, die für jede änderung, die Sie tun müssen auf Ihrem makefile, ab dieser "bootstrap-makefile" Sie sollten in der Lage sein, es zu ändern, zu lernen, Schritt für Schritt, mit der Dokumentation als Referenz.