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
 

danisahne

Aktives Mitglied
Mitglied seit
30 Jul 2005
Beiträge
1,493
Punkte für Reaktionen
0
Punkte
0
Linke mit -static-libgcc oder kopiere die libgcc_s.so.1 auf die Box ins lib Verzeichnis.
 

olistudent

IPPF-Urgestein
Mitglied seit
19 Okt 2004
Beiträge
14,779
Punkte für Reaktionen
10
Punkte
38
Kann man die uClibc eigentlich auch so kompilieren, dass die libgcc standardmäßig statisch gelinkt wird?

MfG Oliver
 

mastertester

Mitglied
Mitglied seit
26 Sep 2004
Beiträge
498
Punkte für Reaktionen
0
Punkte
0
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:

mastertester

Mitglied
Mitglied seit
26 Sep 2004
Beiträge
498
Punkte für Reaktionen
0
Punkte
0
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
 

danisahne

Aktives Mitglied
Mitglied seit
30 Jul 2005
Beiträge
1,493
Punkte für Reaktionen
0
Punkte
0
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
 

mastertester

Mitglied
Mitglied seit
26 Sep 2004
Beiträge
498
Punkte für Reaktionen
0
Punkte
0
@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
 

danisahne

Aktives Mitglied
Mitglied seit
30 Jul 2005
Beiträge
1,493
Punkte für Reaktionen
0
Punkte
0
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
 

mastertester

Mitglied
Mitglied seit
26 Sep 2004
Beiträge
498
Punkte für Reaktionen
0
Punkte
0
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
 

danisahne

Aktives Mitglied
Mitglied seit
30 Jul 2005
Beiträge
1,493
Punkte für Reaktionen
0
Punkte
0
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.
 

mastertester

Mitglied
Mitglied seit
26 Sep 2004
Beiträge
498
Punkte für Reaktionen
0
Punkte
0
Bei make openssl kommt leider nur:

Code:
[email protected]:~/ds-0.2.5$ make openssl
make: Für das Ziel »openssl« ist nichts zu tun.
[email protected]:~/ds-0.2.5$
Gruß
mastertester
 

danisahne

Aktives Mitglied
Mitglied seit
30 Jul 2005
Beiträge
1,493
Punkte für Reaktionen
0
Punkte
0
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?
 

mastertester

Mitglied
Mitglied seit
26 Sep 2004
Beiträge
498
Punkte für Reaktionen
0
Punkte
0
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
[email protected]:~/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:

danisahne

Aktives Mitglied
Mitglied seit
30 Jul 2005
Beiträge
1,493
Punkte für Reaktionen
0
Punkte
0
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).
 

mastertester

Mitglied
Mitglied seit
26 Sep 2004
Beiträge
498
Punkte für Reaktionen
0
Punkte
0
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!
 

fischefr

Mitglied
Mitglied seit
30 Okt 2004
Beiträge
202
Punkte für Reaktionen
0
Punkte
16
@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.
 

mastertester

Mitglied
Mitglied seit
26 Sep 2004
Beiträge
498
Punkte für Reaktionen
0
Punkte
0
@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
 

danisahne

Aktives Mitglied
Mitglied seit
30 Jul 2005
Beiträge
1,493
Punkte für Reaktionen
0
Punkte
0
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
 

mastertester

Mitglied
Mitglied seit
26 Sep 2004
Beiträge
498
Punkte für Reaktionen
0
Punkte
0
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
[email protected]:~/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
 

danisahne

Aktives Mitglied
Mitglied seit
30 Jul 2005
Beiträge
1,493
Punkte für Reaktionen
0
Punkte
0
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
 

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
232,056
Beiträge
2,018,327
Mitglieder
349,366
Neuestes Mitglied
mirc00