Hallo,
verstehe das Verhalten von avrdude beim Compilieren nicht. Ich habe drei
c-Files, die per makefile mit "SRC = $(TARGET)" eingebunden werden.
Ändere ich in einer dieser Dateien etwas, so kommt beim Compilieren eine
Fehlermeldung ("Variable nicht deklariert"). Was ich nicht verstehe:
- Wenn ich die Änderung zurücknehme (per undo im editor, Tippfehler also
ausgeschlossen) und das betreffende c-file sowie main.c speichere (beide
sind in den Zustand VOR der Änderung zurückversetzt), so kommt beim
Compilieren immer noch die Fehlermeldung, obwohl ich doch die den Fehler
auslösenden Änderungen rückgängig gemacht habe.
Weiß jemand Hilfe? Danke im Voraus.
Roman S. schrieb: > die per makefile mit "SRC = $(TARGET)" eingebunden werden. Das klingt arg seltsam. kannst du das mal genauer beschreiben? Oliver
Hi Oliver, dies ist die angesprochene Stelle im makefile, (ich denke, das müßte soweit korrekt sein, ich verwende ein makefile und die c-sourcen von Uli Radig (mmc-Karten-Bibliothek)):
1 | SRC = $(TARGET).c mmc.c fat.c usart.c |
Wie gesagt, das wird anfänglich richtig compiliert, wenn ich aber eine Änderung durchführe, gibt es das Verhalten aus meinem ersten posting. In dem Code sind außerdem includes referenziert. Die Änderungen waren wie folgt: Ersetzen dieser Funktion in der Datei "usart.c":
1 | void usart_init(unsigned long baudrate) |
2 | {
|
3 | //Serielle Schnittstelle 1
|
4 | //Enable TXEN im Register UCR TX-Data Enable
|
5 | UCR =(1 << TXEN | 1 << RXEN | 1<< RXCIE); |
6 | // 0 = Parity Mode Disabled
|
7 | // 1 = Parity Mode Enabled, Even Parity
|
8 | // 2 = Parity Mode Enabled, Odd Parity
|
9 | //UCSRC = 0x06 + ((parity+1)<<4);
|
10 | //UCSRC |= (1<<USBS);
|
11 | //Teiler wird gesetzt
|
12 | UBRR=(F_CPU / (baudrate * 16L) - 1); |
13 | }
|
durch eine eigene, in der "UCR" nicht vorkommt. Beim Compilieren meckert er dann, dass "UCR" nicht deklariert ist (???). Nehme ich die Änderung zurück, speichere beide files (main.c und usart.c) und compiliere erneut, dann ändert das nichts. Erst, wenn ich die files lösche und sie aus dem von der Downloadquelle runtergeladenen Ordner erneut in mein Projektverzeichnis kopiere, tut es wieder. Hoffe, meine Schilderung ist halbwegs verständlich. Gruß, Roman
Hast Du mal alle Zwischendateien (manchmal *.obj), nach einer Änderung und den darauf folgenden schritten zur Neuerstellung gelöscht? Wenn Du die Originale noch hast, kannst Du damit nicht viel falsch machen. Und dann den Compiler/Linker drauf losgelassen. Ganz wichtig die Meldungen nicht nur durchrauschen lassen sondern bestaunen. Ein weiterer Stolperstein könnte ein vergessener Schreibschutz, bei einer der Dateien sein.
>SRC = $(TARGET).c mmc.c fat.c usart.c
Dieses Konstrukt wird in vielen Makefiles verwendet.
Sollte also gehen.
Wird in der konkreten Zeile auch: "$(TARGET).c" richtig aufgelöst?
Siehe auch Compilerausgabe.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.