Hallo, ich hab seit 5 Jahren mal wieder meinen Atmega8 ausgepackt..... Nun wollte ich ein altes (shittiges) Programm wieder kompilieren und Linken! Leider krieg ich das nicht mehr hin! der findet die inkludierten Dateien nicht! oder so Wie bekomme ich denn aus den 3 Dateien mein hex file? VG
das ist die Fehlermeldung --> $ sudo avr-gcc -g -Os -mmcu=atmega8 -o main.elf main.c In file included from main.c:46:0: /usr/lib/avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>." [-Wcpp] #warning "This file has been moved to <util/delay.h>." ^ /tmp/ccwGQNMz.o: In Funktion `main': /media/interne_festplatte/data/Dokumente/Aktionen/AVR_Projekte/Herzen/sr c/main.c:(.text.startup+0x2): Nicht definierter Verweis auf `avr_spi_master_init' /tmp/ccwGQNMz.o: In Funktion `__vector_6': /media/interne_festplatte/data/Dokumente/Aktionen/AVR_Projekte/Herzen/sr c/main.c:305: Nicht definierter Verweis auf `avr_spi_send_word' collect2: error: ld returned 1 exit status rollinator@Z:~/Schreibtisch/interne_festplatte/data/Dokumente/Aktionen/A VR_Projekte/Herzen/src$
MaWin schrieb: > ATMEGA-Verleger schrieb: >> $ sudo avr-gcc > > Achduje. Nein. Tue es nicht. Das hilft mir jetzt so gar nicht.... klar benötige ich für avr-gcc kein sudo aber darum geht's nicht
1 | <util/delay.h> This file has been moved to <util/delay.h> |
2 | |
3 | und |
4 | |
5 | Nicht definierter Verweis auf `avr_spi_send_word' |
Was ist daran jetzt unklar? Erstes sollst du deine Includes für die Datei delay.h genau wie in der Warnungs angezeigt korrigieren. Zweitens ist dein Programm unvollständig. Du hast versucht, nur aus der main.c alleine ein ausführbares Programm (*.elf) zu erstellen. Dann fehlt Dir aber der ganze code aus der Datei spi.c. Die musst du auch compilieren.
Stefan U. schrieb: > Zweitens ist dein Programm unvollständig. Du hast versucht, nur aus der > main.c alleine ein ausführbares Programm (*.elf) zu erstellen. Dann > fehlt Dir aber der ganze code aus der Datei spi.c. Die musst du auch > compilieren. #und wie kann ich dem sagen, dass der natürlich auch die includes mit einkompilieren soll?
Das hat er ja gemacht. Die spi.h (und weitere) hast du mit den #include Zeilen eingebungen. Aber die spi.c hast du nicht eingebunden, die sollst du als Kommandozeilenparameter dem gcc übergeben - oder ein Makefile verwenden.
Stefan U. schrieb: > Aber die spi.c hast du nicht eingebunden, die sollst du als > Kommandozeilenparameter dem gcc übergeben - oder ein Makefile verwenden. hmmh dann habe ich zwei object files! Wie kriege ich die miteinander verbunden?
ok sorry für meine Blödheit!!! ohne gleich ein make file zu basteln, so ist natürlich der Ablauf: compile all c-files: --> avr-gcc -g -Os -mmcu=atmega8 -c spi.c -c main.c link all object files: --> avr-gcc -g -mmcu=atmega8 -o flash.elf main.o spi.o creating hex file for avrdude to throw onto the controller: --> avr-objcopy -j .text -j .data -O ihex flash.elf flash.hex use avrdude, dude! sudo avrdude -p atmega8 -c stk500v2 -P /dev/ttyUSB0 -U flash:w:flash.hex
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.