Forum: Compiler & IDEs Make-File für ARM-GNU


von Konrad Metzer (Gast)


Lesenswert?

Gibt es eigentlich Unterschiede in den make-Files für Unix und Win ?
1. im Namen "make" oder "make.bat"
2. in den zu verwendenden Befehlen z.B. für Kommentare "#"
oder"REM".

Jedenfalls "versteht" mein PC die Befehle MCS oder CC nicht.

Konrad

von Jörg Wunsch (Gast)


Lesenswert?

Unterschiedliche make-Varianten implementieren teilweise
unterschiedliche feature sets.  Auch im Unix-Bereich gibt es da
Unterschiede zwischen den drei Grundrichtungen SystemV make, GNU make
und BSD make.  Im PC-Bereich kommen noch andere Dialekte hinzu.

Alle haben aber typischerweise gleiche Basisfunktionalität und
-syntax.

Das ausführbare Programm heißt unter Unix schlicht »make«, unter DOS
und Windows dann »make.exe« (wobei Du das .exe ja nicht eintippen
musst).  Der bevorzugte Dateiname für das Makefile kann vielleicht
unter DOS/Win auch ein anderer sein, unter Unix ist es zuerst
»makefile«, dann »Makefile«.

Was soll CC und MCS in Deinem Zusammenhang sein?  Make-Makros?
Externe Kommandonamen?  (MCS kenn ich gar nicht, CC verbinde ich in
Großbuchstaben mit einem make-Makro für den Kommandonamen des
C-Compilers, der standardmäßig auf "cc" steht, aber im
Controller-Umfeld oft anders belegt wird, in Deinem Falle vielleicht
"arm-gcc".)  Make tut natürlich weiter nichts, als eine Abfolge von
externen Kommandos aufzubauen, das Vorhanensein von Kommandos mit
entsprechendem Namen und deren Zugreifbarkeit über den
Standard-Kommando-Suchpfad mußt Du schon selbst organisieren.

von Konrad Metzer (Gast)


Lesenswert?

Ich habe bis jetzt folgendes herausgefunden: zu dem GNU-Compiler für Win
gibt es ein file: make.bat, das DOS-Befehle enthält und damit den
Compiler etc steuert. Dies sehen natürlich anders aus als die Befehle
in einem make-file. "make" ist ja ein Programm, das das File
interpretiert. Aber das gibt es nicht bei Window, oder?

von OldBug (Gast)


Lesenswert?

Welche Distribution verwendest Du denn?

make/Makefiles gibt es auch auf Windows, aber man MUSS es nicht
nutzen...

von Konrad Metzer (Gast)


Lesenswert?

Distribution ? Ich habe den Compiler von Hitex bekommen, die auch einen
Debugger und ein HW-Tool für die Jtag-Schnittstelle (Tantino) liefern.
Version 3.3.2

von OldBug (Gast)


Lesenswert?

Bei "Hitex" kenne ich den Umfang der Toolchain nicht, daher kann ich
da kaum was zu sagen (ob make verfügbar etc)...

von Konrad Metzer (Gast)


Lesenswert?

Eine Rückfrage be HITEX hat ergeben, dass sie z.Z. mit dem DOS-Batchfile
arbeiten und nicht make verwenden. Und das funktioniert inzwischen
auch.
Bis hierhin alles alles ok.

von mthomas (Gast)


Lesenswert?

"make.bat" ist typischerweise kein "Makefile", aber ein
gebraeuchlicher Name. Mit diesen Batch-Dateien ("shell-scripts") wird
direkt der Compiler (bzw. Linker) aufgerufen. Ich kenne die
HITEX-Produkte auch nicht, aber die Erstellung einer Batch-Datei durch
die "IDE" und der anschliessende Aufruf des Kommandointerpreters
(cmd.exe/command.com) zur Abarbeitung dieser Skript-Datei ist im
Windows/DOS-Umfeld nicht unueblich. Makefiles im "klassischen" Sinn
sind Steuerdateien fuer ein Programm make(.exe) (bei MS nmake). make
ruft seinerseits auf Grundlage der Angaben in dieser Steuerdatei den
Compiler/Linker mit entsprechenden Parametern auf. Für Windows gibt es
z.B. nmake von MS, bei Visual C/Studio dabei und wenn recht erinnert
auch "kostenlos" irgendwo auf der MS-Seite zu "saugen", ist aber
nicht ganz gnu-make kompatibel. Ein gnumake für Windows gibt es
allerdings auch. Ist z.B. in WinAVR und WinARM enthalten.

von Konrad Metzer (Gast)


Lesenswert?

Vielen Dank für die Infos bisher.
Noch eine Frage: Woher bekommt der Linker (Aufruf aus make.bat siehe
unten) die Information ber den zur Verfügung stehenden Speicher? Doch
nicht aus den dann compilieren Header-Files?

####### Linker Optionen
set ld_opt=--cref -t -static -lc -lm -Map=TST3.map -T.\TST3.ld

REM  ---------------------------------------------------
ECHO Linking
REM  ---------------------------------------------------
cd objects
set obj_file=TST3.elf
set obj_lst=startup.o a_main.o a_interrupt.o
arm-elf-ld.exe %ld_opt% --start-group %obj_lst% -o %obj_file%
########

von OldBug (Gast)


Lesenswert?

-T.\TST3.ld

Diese Option sagt dem Linker, welches Linkerfile er verwenden soll.
In diesem Linkerfile werden diese Angaben enthalten sein, und
zusätzlich vermutlich noch die verwendeten "standard-libs".

von Konrad Metzger (Gast)


Lesenswert?

Danke, den Inhalt versuche ich dann mal selbst zu entschlüsseln.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.