PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pfade zu *.so Libs ausschliessen?



sticky bit
17.06.2003, 01:38
Also Situation ist folgende, ich will mir n Kreuz-Kompilier-Umgebung aufbauen, auf nem Pentium MMX ergo "i586-pc-linux-gnu" als Host-Triplett. So, nun hab ich folgendes Problem, dass ich die glibc für die Architekuren einbauen muss. Für "i586-pc-linux-gnu" ists ja logischer Weise schon da, für "i386-pc-linux-gnu" und "i486-pc-linux-gnu" ists auch kein Problem. Nur für "i686-pc-linux-gnu" gibts Probleme und das liegt an der dynamischen Verlinkung ein einiger Programme aus den binutils. Und zwar folgendes, bevor die "i686-pc-linux-gnu" glibc.so.6 (Link auf ./libc-2.3.2.so) in /usr/i686-pc-linux-gnu/lib/ mittels make $FLAGS install installiert ist läuft alles reibungslos, die Programme aus den binutils sind bis dahin gegen die /lib/libc.so.6 gelinkt


$ ldd /usr/i686-pc-linux-gnu/bin/as
...
libc.so.6 => /lib/libc.so.6
...

aber ab dann gegen die /usr/i686-pc-linux-gnu/lib/libc.so.6


$ ldd /usr/i686-pc-linux-gnu/bin/as
...
libc.so.6 => /usr/i686-pc-linux-gnu/lib/libc.so.6
...

Dann wird im Intallationsprozess wird aber /usr/i686-pc-linux-gnu/bin/ld (Ausgabe von ldd im Wesentlichen ist gleich) benötigt, was natürlich mit ner "illegal instruction" Meldung fehlschlägt, weil die Lib nun natürlich für ne unpassende Architektur ist.

Ok, dacht ich mir, musst halt die /etc/ld.so.conf anpassen. Vorher war die allerdings leer, aber naja egal, ich habs trotzdem versucht


$ cat /etc/ld.so.conf
/lib
/usr/lib

ein anschliessendes ldconfig


$ ldconfig -v
/lib:
...
libxyz.1.so -> libxyz.so.1.2.3
...
/usr/lib:
...
libabc.1.so -> libabc.so.1.2.3
...

schien mir erfolgreich, aber Pustekuchen.


$ ldd /usr/i686-pc-linux-gnu/bin/as
...
libc.so.6 => /usr/i686-pc-linux-gnu/lib/libc.so.6
...

OK, dann hab ich noch $LD_LIBRARY_PATH sowie $LD_RUN_PATH auf "/lib:/usr/lib" gesetzt und nochmals ldconfig ausgeführt. Wieder kein Erfolg.

Seltsamerweise, wenn ich die libc.so.6 in /usr/i686-pc-linux-gnu/lib/ lösche bzw umbenenne, dann gehts wieder auf die /lib/libc.so.6. Bringt nur nichts, weil dann bei nem erneuten Installationsversuch der glibc diese ja wieder installiert wird und das Ganze wieder von vorne anfängt, ausserdem werd ich noch mehr Libs so kreuzkompilieren müssen also sollten die "i686-pc-linux-gnu" binutils generell mit den "i586-pc-linux-gnu" bzw. native Libs gelinkt sein.

Nur wie zum Teufel? Bin mit meinem Latein am letzten Ende angelangt. Wie kann ich es hinkriegn, dass /usr/i686-pc-linux-gnu/lib/libc.so.6 als Link auf /usr/i686-pc-linux-gnu/lib/libc-2.3.3.so existiert (Umlinken (SymLinks) bringt nichts, sonst überschreib ich mir die native Lib, der Effekt den das mit sich bringen würde ist unerwünscht... ;) ) aber /usr/i686-pc-linux-gnu/bin/as und andere gegen /lib/libc.so.6 gelinkt ausgeführt werden und nicht gegen /usr/i686-pc-linux-gnu/lib/libc.so.6. Das muss doch irgendwie konfigurierbar sein???

devilz
17.06.2003, 13:22
Wäre sowas wie User-Mode-Linux nicht auch eine Lösung ?

sticky bit
17.06.2003, 15:38
Hmm, das es sowas gibt wusste ich gar nicht. Höhrt sich ganz cool an, werd ich mir auf jeden Fall irgendwann mal ansehen. Im Moment hab ich allerdings glaub ich keine Zeit dazu mich da einzuarbeiten, ich versuche halt mein eigenes Linux zusammenzustellen und habe gehofft es gäbe ne relativ einfache Lösung von Anfang an eine Kreuz-Kompilier Umgebung einzubauen (ausser nen neuen Rechner mit nem i686, was mir aber u. U. später für mk86, ppc u. Ä. auch nichts helfen wird...), irgendwann wäre ich auch gerne fertig damit.
Also so recht ist es nicht das was ich suche, aber trotzdem vielen Dank für den Hinweiss, da lässt sich sicher irgendwann mal irgendwas mit anfangen!