AVR4: collect2: ld returned 1 exit status

OP #2499472
Lesenswert?

Hallo an alle!

wir sind jetzt auf ein weiteres Problem beim compilieren gestossen

nämlich das:

collect2: ld returned 1 exit status
make: *** [Technikerarbeit.elf] Fehler 1
Build failed with 1 errors and 3 warnings...


irgendeine datei fehlt dem Linker, aber es ist nicht ersichtlich welche 
das sein soll oder kann! kann man das irgendwo auslesen oder kann einer 
mal den code überfliegen und mir einen tip geben wo ich suchen kann!

MfG
Arne
OP #2499745
Lesenswert?

so hier die komplette Log Meldung:
1
Build started 13.1.2012 at 15:16:57
2
avr-gcc -I"C:\Users\Arne\Desktop\Programmierung\header"  -mmcu=atmega328p -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Technikerarbeit.o -MF dep/Technikerarbeit.o.d  -c  ../Te
3
chnikerarbeit.c
4

5
In file included from ../snap.c:75:0,
6
                 from ../Technikerarbeit.c:3:
7
C:\Users\Arne\Desktop\Programmierung\header/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
8
../Technikerarbeit.c: In function 'main':
9
../Technikerarbeit.c:16:10: warning: unused variable 'anzahl_packete'
10
../Technikerarbeit.c:15:10: warning: unused variable 'source_address'
11
../Technikerarbeit.c:13:13: warning: unused variable 'schalter'
12

13
avr-gcc -I"C:\Users\Arne\Desktop\Programmierung\header"  -mmcu=atmega328p -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT edm.o -MF dep/edm.o.d  -c  ../edm.c
14
avr-gcc -I"C:\Users\Arne\Desktop\Programmierung\header"  -mmcu=atmega328p -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Delay.o -MF dep/Delay.o.d  -c  ../Delay.c
15
avr-gcc -I"C:\Users\Arne\Desktop\Programmierung\header"  -mmcu=atmega328p -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Snap.o -MF dep/Snap.o.d  -c  ../Snap.c
16
In file included from ../Snap.c:75:0:
17
C:\Users\Arne\Desktop\Programmierung\header/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
18
avr-gcc -mmcu=atmega328p -Wl,-Map=Technikerarbeit.map Technikerarbeit.o edm.o Delay.o Snap.o    -lc -lm -lprintf_flt -lprintf_min -lscanf_flt -lscanf_min  -o Technikerarbeit.elf
19
Snap.o: In function `SnapInit':
20
C:\Users\Arne\Desktop\Programmierung\default/../Snap.c:119: multiple definition of `SnapInit'
21
Technikerarbeit.o:C:\Users\Arne\Desktop\Programmierung\default/../snap.c:119: first defined here
22
Snap.o:(.data+0x0): multiple definition of `SnapNodeAddress'
23
Technikerarbeit.o:(.data+0x0): first defined here
24
Snap.o: In function `SnapReceiveChar':
25
C:\Users\Arne\Desktop\Programmierung\default/../Snap.c:188: multiple definition of `SnapReceiveChar'
26
Technikerarbeit.o:C:\Users\Arne\Desktop\Programmierung\default/../snap.c:188: first defined here
27
Snap.o: In function `__vector_18':
28
C:\Users\Arne\Desktop\Programmierung\default/../Snap.c:149: multiple definition of `__vector_18'
29
Technikerarbeit.o:C:\Users\Arne\Desktop\Programmierung\default/../snap.c:149: first defined here
30
Snap.o: In function `TxChar':
31
C:\Users\Arne\Desktop\Programmierung\default/../Snap.c:408: multiple definition of `TxChar'
32
Technikerarbeit.o:C:\Users\Arne\Desktop\Programmierung\default/../snap.c:408: first defined here
33
Snap.o: In function `SnapSend':
34
C:\Users\Arne\Desktop\Programmierung\default/../Snap.c:289: multiple definition of `SnapSend'
35
Technikerarbeit.o:C:\Users\Arne\Desktop\Programmierung\default/../snap.c:289: first defined here
36
collect2: ld returned 1 exit status
37
make: *** [Technikerarbeit.elf] Fehler 1
38
Build failed with 1 errors and 5 warnings...
#2499756
Lesenswert?

Und das hier
1
Snap.o: In function `SnapInit':
2
C:\Users\Arne\Desktop\Programmierung\default/../Snap.c:119: multiple definition of `SnapInit'
3
Technikerarbeit.o:C:\Users\Arne\Desktop\Programmierung\default/../snap.c:119: first defined here

ist keine Fehlermeldung, oder wie würdest du das sehen?

Von wegen "keine Fehlermeldung vom Linker"
Gast #2499762
Lesenswert?

"multiple definition of ..." ist ein Fehler, den der linker wirft

Davon gibt es nicht nur einen, sondern mehrere, nur kann das Studio die 
linker-Fehlermeldungen nichta auswerten, und meldet daher nur die 
"Nicht-Erfolsmeldung" des linkers als Fehler.

Also zeig mal deinen Code, da steckt der Wurm drin.

Oliver
OP #2499793
Lesenswert?

Karl Heinz Buchegger schrieb:
> Und das hier
>
>
1
> Snap.o: In function `SnapInit':
2
> C:\Users\Arne\Desktop\Programmierung\default/../Snap.c:119: multiple
3
> definition of `SnapInit'
4
> Technikerarbeit.o:C:\Users\Arne\Desktop\Programmierung\default/../snap.c:119:
5
> first defined here
6
>
>
> ist keine Fehlermeldung, oder wie würdest du das sehen?
>
> Von wegen "keine Fehlermeldung vom Linker"

es sind 5 von den meldungen, nicht nur eine, deswegen bring ich das 
nicht in zusammenhang!

in der datei hier ist der quellcode der SNAP.c

http://www.fotogalerie-neuffen.de/Snap.pdf
OP #2499839
Lesenswert?

so das müsste jetzt alles an dateien sein!

die technikerarbeit.c ist noch nicht fertig, der eigentliche code fehlt 
noch, das ist jetzt nur zum testen!

µC: Atmega 328P

Gruß
Arne
Angehängte Dateien:
OP #2499992
Lesenswert?

Karl Heinz Buchegger schrieb:
> Peter II schrieb:
>> Karl Heinz Buchegger schrieb:
>>> irrtümlich einen#include "snap.c"
>>> stehen hast?
>>
>> sehr gut Herr Buchegger..
>>
>> siehe anhänge.
>
> mit der Zeit kennt man ja seine Pappenheimer :-)

ja des ist net ganz so die feine englische art :-) aber mit snap.h hat 
es net so ganz geklappt das ist n bissel komisch!

und n bissel zu meiner verteidigung: ich bin avr neuling hatte bis jetzt 
nur erfahrung mit ride7! das ist mein erster anlauf damit!

p.s. das tutorial hab ich gemacht aber das beantwortet au net alle 
fragen :-)
#2500005
Lesenswert?

Arne Pfäffle schrieb:
> Karl Heinz Buchegger schrieb:
>> Peter II schrieb:
>>> Karl Heinz Buchegger schrieb:
>>>> irrtümlich einen#include "snap.c"
>>>> stehen hast?
>>>
>>> sehr gut Herr Buchegger..
>>>
>>> siehe anhänge.
>>
>> mit der Zeit kennt man ja seine Pappenheimer :-)
>
> ja des ist net ganz so die feine englische art :-) aber mit snap.h hat
> es net so ganz geklappt das ist n bissel komisch!

Dann muss man dem eben nachgehen.
Aber ein 'hat nicht so geklappt' durch eine Wischi-Waschi-Lösung zu 
ersetzen, ist keine Lösung. Du siehst ja, was dabei rauskommt.
OP #2500033
Lesenswert?

1
rm -rf Technikerarbeit.o edm.o Delay.o Snap.o  Technikerarbeit.elf dep/* Technikerarbeit.hex Technikerarbeit.eep Technikerarbeit.lss Technikerarbeit.map
2
Build succeeded with 0 Warnings...
3
avr-gcc -I"C:\Users\Arne\Desktop\Programmierung\header"  -mmcu=atmega328p -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Technikerarbeit.o -MF dep/Technikerarbeit.o.d  -c  ../Te
4
chnikerarbeit.c
5

6
In file included from C:\Users\Arne\Desktop\Programmierung\header/snap.h:75:0,
7
                 from ../Technikerarbeit.c:3:
8
C:\Users\Arne\Desktop\Programmierung\header/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
9
../Technikerarbeit.c: In function 'main':
10
../Technikerarbeit.c:16:10: warning: unused variable 'anzahl_packete'
11
../Technikerarbeit.c:15:10: warning: unused variable 'source_address'
12
../Technikerarbeit.c:13:13: warning: unused variable 'schalter'
13
avr-gcc -I"C:\Users\Arne\Desktop\Programmierung\header"  -mmcu=atmega328p -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT edm.o -MF dep/edm.o.d  -c  ../edm.c
14
avr-gcc -I"C:\Users\Arne\Desktop\Programmierung\header"  -mmcu=atmega328p -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Delay.o -MF dep/Delay.o.d  -c  ../Delay.c
15
avr-gcc -mmcu=atmega328p -Wl,-Map=Technikerarbeit.map Technikerarbeit.o edm.o Delay.o    -lc -lm -lprintf_flt -lprintf_min -lscanf_flt -lscanf_min  -o Technikerarbeit.elf
16
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature  Technikerarbeit.elf Technikerarbeit.hex
17
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex Technikerarbeit.elf Technikerarbeit.eep || exit 0
18
avr-objdump -h -S Technikerarbeit.elf > Technikerarbeit.lss
19
ECHO ist ausgeschaltet (OFF).
20
AVR Memory Usage
21
----------------
22
Device: atmega328p
23

24
Program:    2912 bytes (8.9% Full)
25
(.text + .data + .bootloader)
26

27
Data:        538 bytes (26.3% Full)
28
(.data + .bss + .noinit)
29

30

31
Build succeeded with 4 Warnings...

snap.h ->> snap_header.h
snap.c ->> snap.h

in der neuen snap.h den neuen header einbinden und diesen in 
Technikerarbeit.c einbinden und dann kam der log!
#2500063
Lesenswert?

Noch ein Fehler.

In snap.h

Hier
1
// Received Snap Packet
2
unsigned char   SnapPacketData[512];    // Data of the current packet
3
unsigned int  SnapPacketDataLength;    // Number of bytes in SnapPacketData
4
unsigned long  SnapPacketDest;        // For completed packets, this will always be this node's address
5
unsigned long  SnapPacketSource;      // Address of the sender
6
char      SnapPacketAck;        // Ack byte of the packet
7
unsigned int  SnapPacketCRC;

muss überall ein extern davor.

Dafür muss aber die ganze Latte an Variablen in snap.c rein.

http://www.mikrocontroller.net/articles/FAQ#Globale_Variablen_.C3.BCber_mehrere_Dateien
OP #2500070
Lesenswert?

ob es daran was auszusetzen gibt wollt ich eigentlich wissen?

eigentlich ist die lösung relativ simpel, aber wenn man sich in dem 
problem verrennt wie ich heute mittag, dann sieht man den wald eben 
nicht mehr... trotzdem danke für die hilfe und anregungen!

Gruß
Arne
#2500073
Lesenswert?

Arne Pfäffle schrieb:
> ob es daran was auszusetzen gibt wollt ich eigentlich wissen?

Na, ja.
Die Warnungen müssen noch weg.

Am besten behandelst du Warnungen als ob sie Fehler wären und änderst 
deinen Code so, dass die Ursache der Warnung behoben wird. Was für 
geübte Profis völlig normal ist (Compiler werden so eingestellt, dass 
sie Warnungen wie Fehler behandeln, sprich: sie erzeugen dann kein 
Object-File), sollte dir als Neuling recht sein.
OP #2500082
Lesenswert?

ok, dann mach ich mich daran, das einzigste was jetzt noch kommt sind 
unbenutzte variablen

und wenn ich das mit dem extern mach, kommen 34 fehler mit
1
C:\Users\Arne\Desktop\Programmierung\header/snap.h:208: undefined reference to `SnapPacketAck'

das ist natürlich nur EIN beispiel!



Gruß
#2500084
Lesenswert?

Arne Pfäffle schrieb:
> ok, dann mach ich mich daran, das einzigste was jetzt noch kommt sind
> unbenutzte variablen
>
> und wenn ich das mit dem extern mach, kommen 34 fehler mit
>
>
1
> C:\Users\Arne\Desktop\Programmierung\header/snap.h:208: undefined
2
> reference to `SnapPacketAck'
3
>

Du hast den 2.ten Teil des Vorschlags nicht umgesetzt:

Die Variablen müssen natürlich irgendwo sein! extern sagt ja nur: "Es 
gibt sie irgendwo". Nur wo?

In deinem snap.C-File!

Dort müssen die alle rein.

(Zusatz: Link nicht gelesen?)
Moderator Persönliche Seite #2503513
Lesenswert?

Krapao schrieb:
> Ist u.a. dafür nicht die Diskussionsseite da?

Jein.  Die Diskussionsseite liest sich nicht jeder durch.  Eine
derartige Implementierung empfindet manch einer aber schon als
reichlich verquer (das Headerfile wird nur durch das Vorhandensein
eines vorher definierten Makros plötzlich vom Deklarations- zum
Definitionsmodul umfunktioniert), dass man dies schon im Artikel
selbst kurz erwähnen sollte, wobei für umfangreichere Argumentationen
natürlich auf die Diskussionsseite verwiesen werden kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren