Hallo,
ich habe Probleme beim Einbinden von externen Bibliotheken ins AVR-Studio 4.
Hier als Beispiel:
Die Dateien uart.h und uart.c habe ich in das Projektverzeichnis kopiert und den Verzeichnissen "Source Files" und "Header Files" im AVR-Studio hinzugefügt.Code:#include <avr/interrupt.h> // Wird nur gebraucht bei der Interrupt-Version #include "uart.h" // Einen 0-terminierten String übertragen. void uart_puts (const char *s) { do { uart_putc (*s); } while (*s++); } // Ein Zeilenumbruch, abhängig davon, was die Gegenstelle haben will // Windows: "rn" // Linux : "n" // MacOS : "r" #define CR "\r\n" char text[] = "Hallo Welt." CR; int main() { uart_init(2400); sei(); // Wird nur gebraucht bei der Interrupt-Version uart_puts (text); uart_puts ("Hallo Welt!" CR); return 0; }
Als Makefile benutze ich das vom Studio selbst generierte.
Wenn ich jetzt aber compilieren möchte spuckt der Compiler folgenden Text aus:
Vermute mal, dass ich irgend etwas bei der Verwendung der Bibliotheken nicht verstanden habe.Build started 1.9.2011 at 03:06:36
avr-gcc -I"C:\Users\...\Documents\Versuche\..\..\Desktop\Li bs\UART Lib" -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT CVersuche.o -MF dep
/CVersuche.o.d -c ../CVersuche.c
avr-gcc -I"C:\Users\...\Documents\Versuche\..\..\Desktop\Li bs\UART Lib" -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT uart.o -MF dep/uart
.o.d -c ../uart.c
avr-gcc -mmcu=atmega8 -Wl,-Map=Versuche.map CVersuche.o uart.o -o Versuche.elf
uart.o: In function `uart_puts':
C:\Users\...\Documents\Versuche\default/../uart.c:447: multiple definition of `uart_puts'
CVersuche.o:C:\Users\...\Documents\Versuche\defaul t/../CVersuche.c:6: first defined here
make: *** [Versuche.elf] Error 1
Build failed with 1 errors and 0 warnings...
Könnt ihr mir sagen, wo der Fehler ist und wie es richtig funktioniert?
LG Kimba
Lesezeichen