Fehlermeldung vom Linker: cannot find -lgcc_s

Gast #2118283
Lesenswert?

Hallo,

ich habe meinen Code kompiliert und wenn ich nun den Linker wie 
nachfolgend aufrufe, bekomme ich diese Fehlermeldung:
1
/arm-linux-gnueabi/bin/ld: cannot find -lgcc_s
2
collect2: ld returned 1 exit status

Auch wenn ich in goolgle suche, sagt mir dieses Fehlermeldung immer noch 
nichts. Kann mir jemand sagen was diese Meldung überhaupt sagen soll?
Gast #2118386
Lesenswert?

Mein Aufruf im Makefile sieht so aus:
1
CC      = arm-linux-gnueabi-gcc
2
LINKFIL = lpc-rom.ld
3
LFLAGS  = -T $(LINKFILE) -nostartfiles --warn-common -n
4

5

6
$(APPNAME).elf: $(OBJS) $(LIBNAME).a $(LINKFILE)
7
    $(CC) $(OBJS) $(LIBNAME).a $(LFLAGS) -o $(APPNAME).elf -Wl,-Map,$(APPNAME).map


Eine libgcc_s.so hatte ich zwar schon im System, jedoch konnte er sie 
(glaube ich) nicht finden. Ich habe sie nun mal zum Testen in den Ordner 
mit dem Makefile kopiert. Die Fehlermeldungen sind allerdings die 
gleichen.
Gast #2118404
Lesenswert?

Es wäre deutlich nützlicher, wenn Du den Aufruf des Compilers, wie
ihn "make" expandiert, zeigen würdest (einfach den Output eines "make" 
Laufs
zeigen). Das gezeigte Makefile-Fragment
passt nicht zu der Fehlermeldung in ersten Posting.

f.
Gast #2118478
Lesenswert?

Ok, sorry. Ich versuche es noch mal. (Habe leider recht wenig Erfahrung 
mit makefiles)

Der Aufruf, wenn ich ihn von der Konsole aus verwenden würde:
1
arm-linux-gnueabi-gcc crt.o startup.o printf.o console.o bootloader.o usbstack.a -T lpc2148-rom.ld -nostartfiles --warn-common -n -o bl.elf -Wl,-Map,bl.map
2

3
/opt/emlix/hpp/lib/gcc/arm-linux-gnueabi/4.3.3/../../../../arm-linux-gnueabi/bin/ld: cannot find -lgcc_s
4
collect2: ld returned 1 exit status

Ich hoffe das ist so, wie du es gemeint hast.
Gast #2118579
Lesenswert?

Ich habe mal den Pfad zu der Datei "libgcc_s.so" mit -L im Makefile 
angegeben. Der Aufruf sieht jetzt so aus:
1
arm-linux-gnueabi-gcc crt.o startup.o printf.o console.o bootloader.o usbstack.a -T lpc2148-rom.ld -nostartfiles --warn-common -n   -L/opt/emlix/hpp/sysroot/lib -o bl.elf -Wl,-Map,bl.map
2

3
/opt/emlix/hpp/lib/gcc/arm-linux-gnueabi/4.3.3/../../../../arm-linux-gnueabi/bin/ld: cannot find -lgcc_s
4
collect2: ld returned 1 exit status
5
make: *** [bl.elf] Fehler 1

Also finden sollte er die Datei jetzt auf jedem Fall.
Gast #2118903
Lesenswert?

hp-freund schrieb:
> Ich sehe da garnichts von arm... in deinem Pfad. Bist Du sicher das die
> Datei zum arm und nicht zum System gehört?
> An sonsten versuch mal:
> --disable-threads
> http://www.spinics.net/lists/gcchelp/msg30215.html

Recht herzlichen Dank für den Linkt. --disable-threads hat leider auch 
keine Änderung gebracht. Das es die richtige Lib ist, bin ich mir recht 
sicher. Unter dem gleichen Namen existiert zwar noch eine im gcc-Ordner 
für den x86-Chip von meinem PC, jedoch die hinzugelinkte Lib liegt 
befindet sich im gcc-Ordner der Toolchain (für den ARM). Eher habe ich 
mich schon gefragt ob es überhaupt eine lib ist. Die Änderung *.so 
verwirrt mich irgendwie. Sonst heißen sie doch immer *.a



Oliver schrieb:
> Was ist das denn für eine toolchain? Selbstgebaut?

Es ist eine fertige toolchain für ARM-Prozessoren, die bereits bei einem 
Kollegen zur Verfügung stand. Ich hatte mir die toolchain bereits auch 
schon selber gebaut und bin nach diesesn Vorgaben gegangen (Die 
übriegens gut beschrieben wurden. Vielleicht braucht sie ja noch 
jemand):
http://www.alphapogo.de/

Dort trat bereits der gleiche Fehler auf und ich dachte es liegt an 
einer falsch gebauten toolchain. (Deshalb der zweite Weg zu einer neuen 
toolchain)
Moderator Persönliche Seite #2119233
Lesenswert?

Cross-Toolchain für Linux Targets ist keine allzu gute Idee für einen 
LPC2148, sofern dies wirklich der verwendete Controller ist. Erstmal mit 
einer arm-elf- oder arm-eabi Toolchain versuchen. Das gibt es fertig und 
gratis auch für Linux-Hosts unter anderem bei Codesourcery (CS G++ lite 
for ARM EABI).
Option -n ist mir gerade nicht erinnerlich, was nichts heißen mag aber 
möglicherweise nochmal einen Blick in die binutils und gcc Dokumentation 
wert ist.
Die Verwendung von shared libraries auf einem LPC2148 und ohne 
entsprechendes Betriebssystem im Controller ist keine wirklich gute 
Idee. Ohne ein solches System wird die gcc-Support-Library (wenn richtig 
erinnert für unwinding) auch nach erfolgreicher Suche und erzwungenem 
Anlinken bestenfalls Flash-Speicher verbrauchen.

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