Kimba
01.09.2011, 03:38
Hallo,
ich habe Probleme beim Einbinden von externen Bibliotheken ins AVR-Studio 4.
Hier als Beispiel:
#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;
}
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.
Als Makefile benutze ich das vom Studio selbst generierte.
Wenn ich jetzt aber compilieren möchte spuckt der Compiler folgenden Text aus:
Build started 1.9.2011 at 03:06:36
avr-gcc -I"C:\Users\...\Documents\Versuche\..\..\Desktop\Libs \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\Libs \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...
Vermute mal, dass ich irgend etwas bei der Verwendung der Bibliotheken nicht verstanden habe.
Könnt ihr mir sagen, wo der Fehler ist und wie es richtig funktioniert?
LG Kimba
ich habe Probleme beim Einbinden von externen Bibliotheken ins AVR-Studio 4.
Hier als Beispiel:
#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;
}
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.
Als Makefile benutze ich das vom Studio selbst generierte.
Wenn ich jetzt aber compilieren möchte spuckt der Compiler folgenden Text aus:
Build started 1.9.2011 at 03:06:36
avr-gcc -I"C:\Users\...\Documents\Versuche\..\..\Desktop\Libs \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\Libs \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...
Vermute mal, dass ich irgend etwas bei der Verwendung der Bibliotheken nicht verstanden habe.
Könnt ihr mir sagen, wo der Fehler ist und wie es richtig funktioniert?
LG Kimba