Forum: Compiler & IDEs GCC - Linker-Steuerdatei


von Martin Raffelsieper (Gast)


Lesenswert?

Hallo !

wer kann mir sagen, wie ich dem GCC-Linker eine Steuerdatei angeben
kann, um so lange aufrufe wie z.b. das folgende abzukürzen :


avr-gcc datei_1.o datei_2.o datei_3.o datei_4.o datei_5.o datei_6.o
-Wl,-Map=..\M\mapfile.map, -o..\M\elffile.elf --cref
-mmcu=atmega64


stattdess würde ich lieber schreiben:

avr-gcc ....steuerdatei.xyz


Gruß Martin

von Matthias (Gast)


Lesenswert?

Hi

Was spricht denn gegen ein makefile oder ein Shell/Pearl/sonstwas
Script?

Matthias

von Peter D. (peda)


Lesenswert?

Du kannst es so machen, wie ich:

avr-gcc.exe -xc -Os -mmcu=atmega8 -Wall -g -o main.out *.c

Damit werden alle C-Dateien im aktuellen Verzeichnis compiliert und
zusammen gelinkt.

Eine Kommandozeilenverlängerung kennt der GCC nicht, da er nicht aus
der DOS/Windows-Welt kommt.

Du kannst aber auch eine lange Zeile komplett in eine *.bat Datei
schreiben und diese dann aufrufen.

Willst Du dann noch Teile variabel halten, könne diese als Argument
übergeben werden (%1..%9).

Peter

von Matthias (Gast)


Lesenswert?

Hi

was ist denn eine Kommandozeilenverlängerung?

Matthias

von Peter D. (peda)


Lesenswert?

@Matthias

Beim Keil C51 kann man in der Kommandozeile ein @ gefolgt von einem
Dateinamen angeben.

Dann wird alles in dieser Datei so behandelt, als hätte es in der
Kommandozeile gestanden.

Man kann dann in dieser Datei die Argumente untereinander schreiben,
damit es leserlicher wird.

Z.B. nutze ich es dazu, um in einer Datei alle *.obj zu sammeln und
diese Datei wird dann dem Linker übergeben:

for %%f in ( *.obj ) do echo %%f, & >> l51tmp.tmp
l51.exe @l51tmp.tmp


Peter

von Matthias (Gast)


Lesenswert?

Hi

Nur so nebenbei:
Was übergiebt Windows eigentlich beim Aufruf eines Programms mittels
*.c? Übergibt es *.c als ein Argument oder alle auf den Filter
passenden Dateien als Einzelparameter?
Hab gerade keinen nativen Windows-Compiler da um das mal zu testen.

Matthias

von Jörg Wunsch (Gast)


Lesenswert?

,,Kommandozeilenverlängerung'':

Die schreibt sich unter Unix (und das haben wir hier implizit, sofern
die bash.exe benutzt wird -- make.exe benutzt ebendiese) halt

avr-gcc `cat foo.cmds`

oder wahlweise

avr-gcc $(cat foo.cmds)

Dadurch muß das (anders als unter MS-DOS) nicht jedes Tool für sich
einzeln behandeln.

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.