PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pfade zu *.so Libs ausschliessen, bzw. bestimmte Lib als Verlinkungsziel erzwingen???



sticky bit
09.06.03, 08:14
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 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???