Forum: Compiler & IDEs AVR4: collect2: ld returned 1 exit status


von Arne P. (ob3lix)


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

von Timmo H. (masterfx)


Lesenswert?

Arne Pfäffle schrieb:
> Build failed with 1 errors and 3 warnings...
wärst du so freundlich uns diesen Error und die 3 Warnings auch zu 
zeigen?

von Arne P. (ob3lix)


Lesenswert?

also die 3 warnungen sind nicht benutzte definitionen und den fehler 
zeigt es nicht an! das ist das komische an der ganzen sache! laut google 
fehlen i.welche linkdateien! ich kann nachher mal die komplette logdatei 
reinstellen!

von Arne P. (ob3lix)


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...

von Karl H. (kbuchegg)


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"

von Oliver (Gast)


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

von Arne P. (ob3lix)


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

von Karl H. (kbuchegg)


Lesenswert?

Arne Pfäffle schrieb:

>> Von wegen "keine Fehlermeldung vom Linker"
>
> es sind 5 von den meldungen, nicht nur eine, deswegen bring ich das
> nicht in zusammenhang!

Der Linker meldet an make zurück, dass er das EXE nicht zusammenbauen 
kann. Für make ist das 1 Fehler.

von Karl H. (kbuchegg)


Lesenswert?

Arne Pfäffle schrieb:

> in der datei hier ist der quellcode der SNAP.c
>
> http://www.fotogalerie-neuffen.de/Snap.pdf


Häng doch das C-File hier einfach als Attachment an!

Das ist für dich einfacher und für uns auch. Dann braucht kein Mensch 
erst mal von irgendwoher ein File laden, den PDF Reader starten um dann 
im PDF Reader mit untauglichen MItteln zu suchen.

von Karl H. (kbuchegg)


Lesenswert?

Aber wahrscheinlich ist der Fehler sowieso in einem Header File zu 
suchen, welches sowohl von snap.c als auch von Technikerarbeit.c 
inkludiert wird.

Am schnellsten gehts, wenn du einfach alle *.c und alle *.h Files hier 
hochlädst.

von Karl H. (kbuchegg)


Lesenswert?

Kann es sein, dass du in
Technikerarbeit.c
*****************

irrtümlich einen
1
#include "snap.c"
stehen hast?

von Arne P. (ob3lix)


Angehängte Dateien:

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

von Peter II (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> irrtümlich einen#include "snap.c"
> stehen hast?

sehr gut Herr Buchegger..

siehe anhänge.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Karl Heinz Buchegger schrieb:
> Für make ist das 1 Fehler.

Nein, es ist ein "error code 1", also ein Programmende mit
Fehlerstatus.  Nur Status 0 wäre fehlerfrei.

Nein, der Linker ändert seinen error code nicht in Abhängigkeit
davon, wie viele Fehler er entdeckt hat.

von Karl H. (kbuchegg)


Lesenswert?

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 :-)

von Arne P. (ob3lix)


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 :-)

von Karl H. (kbuchegg)


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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Karl Heinz Buchegger schrieb:
> Du siehst ja, was dabei rauskomm

Hat halt auch nicht so geklappt. ;-)

von Arne P. (ob3lix)


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!

von Karl H. (kbuchegg)


Lesenswert?

Ja und?

Was ist daran jetzt unklar?

von Karl H. (kbuchegg)


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

von Arne P. (ob3lix)


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

von Karl H. (kbuchegg)


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.

von Arne P. (ob3lix)


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ß

von Karl H. (kbuchegg)


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?)

von Arne P. (ob3lix)


Lesenswert?

stimmt, der hat die änderung net richtig geschluckt, jetzt gehts!

danke =)

Gruß

von Johann L. (gjlayde) Benutzerseite


Lesenswert?


von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Johann L. schrieb:

> Oje, #define EXTERN extern. Das muss auch mal jemand überarbeiten!

Man sollte zumindest erwähnen, dass dies nicht jeder als guten Stil
empfindet, auch wenn es formal daran nichts auszusetzen gibt.

von Krapao (Gast)


Lesenswert?

Ist u.a. dafür nicht die Diskussionsseite da?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

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
Noch kein Account? Hier anmelden.