Forum: Compiler & IDEs wie Assembler messages umleiten?


von Peter L. (leistikow)


Lesenswert?

Hallo,

wie kann man dem WinAVR-2008-04-02 beibringen, wo "assembler messages"
abgelegt werden sollen?

Derzeit landen solche Meldungen in irgendeiner Schmutzecke des 
Windowsrechners
(C:/Dokumente und Einstellungen/nnB386~1~/Lokale~1../Temp  usw. usf.
unter irgendeiner Nummer, die es dann gar nicht gibt.

Kann man make.exe entsprechend beeinflussen?

Ich habe übrigens make.exe in das lokale Verzeichnis kopiert, damit es 
nicht mit den make.exe aus den älteren WinAVR-Versionen kollidiert, die 
sich noch auf dem Rechner befinden (in der Hoffnung, daß ich vielleicht 
doch noch die alten Programme ändern und wieder kompilieren kann).

Viele Grüße
Peter

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Peter Leistikow wrote:

> wie kann man dem WinAVR-2008-04-02 beibringen, wo "assembler messages"
> abgelegt werden sollen?

Die werden gar nicht abgelegt, sondern landen auf stderr.  Dort zeigt
sie dir dann normalerweise deine IDE an.

> Derzeit landen solche Meldungen in irgendeiner Schmutzecke des
> Windowsrechners
> (C:/Dokumente und Einstellungen/nnB386~1~/Lokale~1../Temp  usw. usf.
> unter irgendeiner Nummer, die es dann gar nicht gibt.

Das ist der Name einer temporären Datei.  Die heißt temporär, weil
sie nachher wieder gelöscht wird...  Es gibt zwei Wege, wie man diese
Dateien erhalten kann.  Erstens kannst du die Compileroption -c durch
ein -S ersetzen, dann hört der Compiler mit der Arbeit auf, nachdem
er die Assemblerdatei generiert hat.  (Normalerweise legt er diese
eben nur als temporäre Datei ab, und startet danach sofort den
Assembler.)  Du solltest ansonsten die gleichen Optionen benutzen,
außer dass du natürlich die Option »-o dateiname « anpassen musst
oder sie ganz weglassen, dann wird eine Datei mit dem Suffix .s
angelegt.

Bei gleichen Optionen kannst du dann an Hand der Zeilennummer, die
du ja schon aus deinen Assemblermeldungen kennst, rausfinden, was
das Problem war.

Die zweite Variante ist, dass du in die Optionen für den C-Compiler
die Option »-save-temps« mit aufnimmst.  Dann verzichtet der Compiler
darauf, alle temporären Dateien, die während des Compilierens
entstehen, irgendwie zu löschen.  Sie bleiben stehen, und du musst
sie dann irgendwann mit der Hand löschen.

Falls deine assembler message ein "Operation dangerous with linker
stubs" ist, dann kannst du darauf verzichten, dir das anzugucken.
Diese Meldung sollte eigentlich besser gar nicht existieren, da sie
nur mehr verwirrt als wirklich hilft, sie ist aus Versehen wieder in
den Code des Assemblers reingeschlittert.  Da gibt's schon einen
Bugreport bei den GNU Binutils, der zum Entfernen der Meldung führen
soll.

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.