Cross Compiler Problem: can't load library 'libgcc_s.so.1'

mastertester

Mitglied
Mitglied seit
26 Sep 2004
Beiträge
498
Punkte für Reaktionen
0
Punkte
0
Ich habe mir einen Cross Compiler zusammen gebastelt der soweit auch funktioniert. Wenn ich dann z.B. tar auf der FritzBox ausführe, kommt diese Fehlermeldung:

tar: can't load library 'libgcc_s.so.1'

Was stimmt mit meinem Compiler nicht?


Gruß
mastertester
 
Linke mit -static-libgcc oder kopiere die libgcc_s.so.1 auf die Box ins lib Verzeichnis.
 
Kann man die uClibc eigentlich auch so kompilieren, dass die libgcc standardmäßig statisch gelinkt wird?

MfG Oliver
 
danisahne schrieb:
Linke mit -static-libgcc oder kopiere die libgcc_s.so.1 auf die Box ins lib Verzeichnis.

Vielen Dank! Das hat mich wieder ein Stück weiter gebracht!

Jetzt kommt beim ausführen:

Code:
Segmentation fault

Was will er mir denn damit sagen? :-(


EDIT:
Jetzt verstehe ich die Welt nicht mehr! Eben habe ich mal einfach das ganze nur mit tar und nicht mit ./tar aufgerufen, und siehe da es funktioniert ja doch! Wie geht das denn??? Wodurch kommt das jetzt?




Gruß
mastertester
 
Zuletzt bearbeitet:
Wenn ich im Verzeichnis /var/media/ftp/USB-Partition-0-5 # bin, und dann einfach nur tar eingebe, funktioniert tar einwandfrei. Konnte auch was packen und entpacken.

Wenn ich aber
Code:
/var/media/ftp/USB-Partition-0-5/tar
eingebe kommt folgendes:

Code:
Segmentation fault

Woran liegt das?

Gruß
mastertester
 
mastertester schrieb:
Wenn ich im Verzeichnis /var/media/ftp/USB-Partition-0-5 # bin, und dann einfach nur tar eingebe, funktioniert tar einwandfrei. Konnte auch was packen und entpacken.
Wenn du einfach nur tar eingibst, dann wird nicht das tar im selben Verzeichnis ausgeführt wie in Windows! Du hast das busybox tar ausgefürt (tippe mal "which tar", dann weißt du welches). Hintergrund ist der, dass auf Unix Systemen der aktuelle Pfad "." nicht in der Umgebungsvariablen PATH ist. Versuch mal im Verzeichnis /var/media/ftp/USB-Partition-0-5 den Befehl "./tar" und du wirst wieder den Segmentation fault bekommen. Segmentation fault ist sowas wie das weiße X auf rotem Hintergrund unter Windows: Dein Programm ist angestürzt, da es fehlerhaft ist.

Mfg,
danisahne
 
@danisahne

ich habe jetzt das gleiche Problem mit der 'libssl.so.0.9.7'.

Code:
can't load library 'libssl.so.0.9.7'

Was muss ich hier jetzt per -static-XXX linken?

Habe schon alles mögliche probiert, aber hat leider nicht funktioniert.

Ich hätte jetzt auf -static-libssl, -static-lssl oder -static-openssl getippt.

Das war es aber leider nicht.


Gruß
mastertester
 
Warum willst du die libssl statisch linken? Lass es doch dynamisch und pack sie mit auf die Box ins /usr/lib/ Verzeichnis, dann können sich die Lib noch andere Programme teilen. Darum macht man das mit den Libs ja. Wenn du wirklich statisch linken willst, dann nimm -static, das kompiliert alle Libs statisch ein.

Mfg,
danisahne
 
mit dem static linken geht irgendwie nicht. Dann mekert er das Modul OpenSSL würde fehlen, ohne -static läuft das make aber durch.

Muss mich da heute Nachmittag noch mal drum kümmern....

Werde das ganze auch noch mal mit deinem Toolchain probieren! Vielen Dank für die C++ Unterstützung!!! :)


Gruß
mastertester
 
Code:
make openssl
hast du gemacht?

Dann solltest du beim kompilieren bzw. beim ./configure noch "-L/path/tods-x.y.z/toolchain/target/usr/lib" in den LDFLAGS angeben. "-I/path/tods-x.y.z/toolchain/target/usr/include" hast du anscheinend ja schon, sonst würde er die openssl Header nicht finden.
 
Bei make openssl kommt leider nur:

Code:
kara@debian:~/ds-0.2.5$ make openssl
make: Für das Ziel »openssl« ist nichts zu tun.
kara@debian:~/ds-0.2.5$

Gruß
mastertester
 
Dann wurde openssl schon korrekt kompiliert. Kann sein, dass nur das Shared Object .so erstellt wird. Ich hab da weiter nicht darauf geachtet. Warum willst du denn unbedingt statisch linken?
 
Leider kann ich mit dem aktuellen Toolchain nicht mal mehr tar erstellen.

Da kommt jetzt nur noch:

Code:
if mipsel-linux-gcc -DHAVE_CONFIG_H -DLIBDIR=\"/usr/local/lib\" -I. -I. -I..  -g -O2 -MT regex.o -MD -MP -MF ".deps/regex.Tpo" -c -o regex.o regex.c; \
then mv -f ".deps/regex.Tpo" ".deps/regex.Po"; else rm -f ".deps/regex.Tpo"; exit 1; fi
In file included from regex.c:59:
regcomp.c: In function 'init_dfa':
regcomp.c:830: error: 'MB_CUR_MAX' undeclared (first use in this function)
regcomp.c:830: error: (Each undeclared identifier is reported only once
regcomp.c:830: error: for each function it appears in.)
make[3]: *** [regex.o] Fehler 1
 make[3]: Leaving directory `/home/kara/[URL="http://tar-1.15.90/lib"]tar-1.15.90/lib[/URL]'
make[2]: *** [all] Fehler 2
 make[2]: Leaving directory `/home/kara/[URL="http://tar-1.15.90/lib"]tar-1.15.90/lib[/URL]'
make[1]: *** [all-recursive] Fehler 1
make[1]: Leaving directory `/home/kara/tar-1.15.90'
make: *** [all] Fehler 2
kara@debian:~/tar-1.15.90$

Gruß
mastertester

EDIT:
Woran liegt das denn jetzt???

Posting 2:


Ich verstehe hier die Welt nicht mehr.... Hilfe! :-(

-----
Edit Novize:
du solltest bei 200 Beiträgen die Funktion
des "Ändern"-Buttons schon kennengelernt haben.
Diesen Nachtrag nach knapp einer Std ist überflüssig!
-----
 
Zuletzt bearbeitet von einem Moderator:
Ehrlich gesagt gibst du auch viel zu wenig Infos, wie du versuchst das zu kompilieren (und warum du überhaupt tar für die Fritzbox kompilieren willst; das ist doch schon in der busybox vorhanden).
 
Tar sollte eigentlich nur als Test dienen, um zu sehen ob der Compiler läuft.

Ich habe einfach tar runtergeladen, und es dann hiermit probiert:

Code:
 ./configure --target=mipsel-linux --host=mipsel-linux --build=i386


und dann:
Code:
 make

Mit dem alten toolchain von Dir ging das ohne Probleme!


Gruß
mastertester


PS:

@novize,

hast ja Recht! Sorry!
 
@mastertester

ich gehe mal davon aus, dass du https realisieren möchtest... - ich auch! *g*
Also wenn du es schafft hast wäre es nett, wenn du mir das Ding bereitstellen würdest. Man könnte dann noch httpd in die busybox einkompilieren, wenn man websrv nicht benutzen möchte (alte Kamelle, wo keiner irgendwelche Doku darüber hat). Was mich betrifft, ich bin gerade dabei einen busybox-Zugang über web-frontend für die box zu realisieren, die ersten Versuche sehen schon vielversprechend aus.
 
@fischefr,

nein, dass sollte eigentlich nur der ctorrent werden, aber ich schaffe es mit dem neuem Toolchain ja nicht mal mehr tar zu compelieren.... :-(

@DS,

welche uclibc und gcc Version verwendest Du eigentlich??

Gruß
mastertester
 
mastertester schrieb:
welche uclibc und gcc Version verwendest Du eigentlich??
Steht im menuconfig: gcc 4.1.0. Bei der uClibc sind wir an die (ich glaube ein wenig gepatchten uClibc Sourcen von AVM gebunden, weil wir ja wollen, dass die Programme von AVM noch laufen: uClibc 0.9.26 und noch binutils 2.16.91.0.6.

Mfg,
danisahne
 
So, habe es jetzt geschaft tar zu erstellen....
ich musste in der regcomp.c folgende Zeile löschen:

Code:
dfa->mb_cur_max = MB_CUR_MAX;

Aber woher kommt das jetzt? Beim alten toolchain ging es doch auch so!?

Beim versuch openssl noch mal in toolchain zu installieren, kommen folgender Error:
Code:
/home/kara/ds-0.2.5/toolchain/build/gcc-4.1.0-uClibc-0.9.26/mipsel-linux-uclibc/bin-ccache/../lib/gcc/mipsel-linux-uclibc/4.1.0/../../../../mipsel-linux-uclibc/sys-include/features.h:348:2: error: #error It appears you have defined _FILE_OFFSET_BITS=64. Unfortunately, uClibc was built without large file support enabled.
In file included from /home/kara/ds-0.2.5/toolchain/build/gcc-4.1.0-uClibc-0.9.26/mipsel-linux-uclibc/bin-ccache/../lib/gcc/mipsel-linux-uclibc/4.1.0/../../../../mipsel-linux-uclibc/sys-include/stdio.h:67,
                 from bss_file.c:86:
/home/kara/ds-0.2.5/toolchain/build/gcc-4.1.0-uClibc-0.9.26/mipsel-linux-uclibc/bin-ccache/../lib/gcc/mipsel-linux-uclibc/4.1.0/../../../../mipsel-linux-uclibc/sys-include/bits/uClibc_stdio.h:136:2: error: #error Sorry... uClibc was built without large file support!
In file included from bss_file.c:86:
/home/kara/ds-0.2.5/toolchain/build/gcc-4.1.0-uClibc-0.9.26/mipsel-linux-uclibc/bin-ccache/../lib/gcc/mipsel-linux-uclibc/4.1.0/../../../../mipsel-linux-uclibc/sys-include/stdio.h:77: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'fpos_t'
In file included from bss_file.c:86:
/home/kara/ds-0.2.5/toolchain/build/gcc-4.1.0-uClibc-0.9.26/mipsel-linux-uclibc/bin-ccache/../lib/gcc/mipsel-linux-uclibc/4.1.0/../../../../mipsel-linux-uclibc/sys-include/stdio.h:520: error: expected declaration specifiers or '...' before 'fpos_t'
/home/kara/ds-0.2.5/toolchain/build/gcc-4.1.0-uClibc-0.9.26/mipsel-linux-uclibc/bin-ccache/../lib/gcc/mipsel-linux-uclibc/4.1.0/../../../../mipsel-linux-uclibc/sys-include/stdio.h:522: error: expected ';', ',' or ')' before '*' token
make[2]: *** [bss_file.o] Fehler 1
make[2]: Leaving directory `/home/kara/openssl-0.9.8a/crypto/bio'
make[1]: *** [subdirs] Fehler 1
make[1]: Leaving directory `/home/kara/openssl-0.9.8a/crypto'
make: *** [build_crypto] Fehler 1
kara@debian:~/openssl-0.9.8a$

Also kann ich das mit diesem uclibc vergessen? Oder kann ich den large filesupport aktivieren? Bzw. warum hast Du ihn deaktiviert beim erstellen?


Gruß
mastertester
 
Large file support war auch schon in der originalen uClibc von AVM deaktiviert. Hast du openssl mit dem Mod (make openssl) kompiliert oder selbst von den Sourcen? Bei openssl muss man nämlich schon noch einiges Patchen etc. um sie klein zu bekommen.

Wenn du eine uClibc mit LFS haben willst, dann mußt du das in den "Compiler options" im menuconfig aktivieren. Das hab ich allerdings noch nie getestet, obs wirklich funktioniert.

Du kannst natürlich openssl ohne LFS kompilieren, so mach ich es.

Mfg,
danisahne
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,695
Beiträge
2,216,692
Mitglieder
371,315
Neuestes Mitglied
jack-mack
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.