PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pc steuerung: fehler beim compilieren



mover
24.01.2007, 18:59
Das Programm habe ich aus dem Asurobuch übernommen. Beim kompilieren des Quellcodes erscheint eine Fehlermeldung mit der ich nichts anfangen kann, bzw. nicht weiß, wie ich das Problem lösen könnte.



set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
[ -s asuro.d ] || rm -f asuro.d
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 3.3 20030512 (prerelease)
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c -o asuro.o
avr-gcc -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.o test.o asuro.o --output test.elf -Wl,-Map=test.map,--cref -lm
asuro.o(.text+0x5c): In function `__vector_2':
/home/user/asuro/test/asuro.c:69: multiple definition of `__vector_2'
test.o(.text+0x0):/home/user/asuro/test/test.c:38: first defined here
/usr/lib/gcc-lib/avr/3.3/../../../../avr/bin/ld: Warning: size of symbol `__vector_2' changed from 146 in test.o to 82 in asuro.o
/usr/lib/gcc-lib/avr/3.3/../../../../avr/lib/avr4/crtm8.o(.init9+0x0): In function `__bad_interrupt':
../../../crt1/gcrt1.S:99: undefined reference to `main'
make: *** [test.elf] Fehler 1


am Anfang bin ich von einem Fehler beim programmieren ausgegangen. Nachdem ich aber die Datei "PCDemo.c" aus dem Ordner "SelfTest" kopiert habe, erschien nach "make" die gleiche Fehlermeldung.
Andere Programme konnten erfolgreich compiliert werden.

Kann mir da jemand einen Tipp geben?

Danke und Greetz

m.a.r.v.i.n
25.01.2007, 09:53
Hi,

1. du verwendest die erweiterte Asuro Lib hier aus dem Forum oder von Sourceforge. In der erweiterten LIB wird die Interrupt Funktion für den Interrupt 1

SIGNAL (SIG_INTERRUPT1)
bereits verwendet. Ebenso in dem File PCDemo.c. Das geht nicht. Du mußt die Original Asuro.c und Asuro.h von der CD verwenden, oder die Interrupt Funktion aus der neuen Asuro.c entfernen.

2. Im File PCDemo.c fehlt die main Funktion. Jedes C-Programm braucht eine Main Funktion. Füge folgendes in PCDemo.c dazu.



int main(void)
{
PCDemo();
return 0;
}

mover
25.01.2007, 11:19
Hat funktioniert! Danke!