GLIBC statisch einbinden

Post Reply
Message
Author
fungs_nologin

GLIBC statisch einbinden

#1 Post by fungs_nologin »

Hallo,
ich bin hier gerade ein bisschen am rumexperimentieren und habe folgende Konstellation.

Mein Web-Anbieter ist zwar sehr gut und bietet mir einen Linux-Umgebung (i586) und Perl 5.0, hat aber leider kein Image-Magick installiert und ebenso fehlen einige Perl-Module (kann man für den Preis auch nicht unbedingt erwarten. Also habe ich mir gedacht, ich könnte doch einfach die Sachen lokal unter meinem Benutzer installieren. Die einzigen Hilfsmittel, die ich im Moment haben sind ein FTP-Server und PHP/Perl-Programme.
Als erstes habe ich die selbe Verzeichnisstruktur, wie auf dem Server nachgebildet (/home/www/htdocs/username/local) und ImageMagick mit dem diesem Prefix kompiliert (natürlich für 586, wie das Zielsystem). Das gleiche gilt für die Perl-Module.
Zwar stimmen die Perl-Versionen nicht überein, aber so weit bin ich ja noch gar nicht.

Lasse ich jetzt das Perl-Programm laufen, welches ImageMagick über das Perl-Modul PerlMagick benutzt, bekomme ich folgende Fehlermeldung:

Can't load '/home/www/htdocs/username/local/lib/perl/5.8.3/auto/Image/Magick/Magick.so' for module Image::Magick: /lib/libc.so.6: version `GLIBC_2.3' not found (required by /home/www/htdocs/username/local/lib/libMagick.so.6) at /usr/lib/perl5/5.6.0/i586-linux/DynaLoader.pm line 200. at index.cgi line 20

Das liegt offensichtlich daran, dass auf dem Zielsystem eine ältere glibc installiert ist. Welche das ist weiß ich nicht, deshalb wäre es sehr schwierig, auf meinem Rechner die glibc zu installieren und dann IM neu zu kompilieren. Mein Gedanke ist, die GLIBC statisch in das ImageMagick-Programm oder die IM-Bibliotheken einzubinden. Praktisch wäre das auch für die anderen Abhängigkeiten, weil ich ja nicht weiß, was auf dem Zielsystem überhaupt vorhanden ist.

Ich habe schon mal versucht, in der Makefile einfach bei CFLAGS ein -statisch einzufügen, hat aber nichts gebracht, außerdem muss man doch sicherlich auch angeben, welche Bibliotheken man statisch gelinkt haben möchte.

Kennt sich damit zufällig jemand aus?

_MP_

#2 Post by _MP_ »

Wenn überhaupt, dann brauchst du bei den Flags die Option "-static" und nicht deine eingedeutschte Variante.

cu

MP

Demnächst offiziell online: Das Linux Developer Forum

_MP_

#3 Post by _MP_ »

Wenn überhaupt, dann brauchst du bei den Flags die Option "-static" und nicht deine eingedeutschte Variante.

cu

MP

Demnächst offiziell online: Das Linux Developer Forum

fungs_nologin

#4 Post by fungs_nologin »

sorry, ich kriegs einfach nicht hin nen Text ohne Tippfehler abzuliefern. Natürlich habe ich -static benutzt, bringt aber nichts.
Was ich bis jetzt herausgefunden habe:
Magick.so wird mit dem "perl Makefile.pl" von PerlMagick kompiliert. Da gibt es auch eine Static-Option, aber die führt zu einer .a-Datei anstelle der .so-Datei. Da weiß ich dann auch nicht weiter.

Klaus Schäfer

#5 Post by Klaus Schäfer »

Hallo,
schau dir mal statifier an - das macht aus dynamisch gelinkten Programmen
statische - ist genau für so ne Konstellation wie bei dir entwickelt worden.
Homepage http://statifier.sourceforge.net
Das sollte dein Problem hoffentich lösen - habs selbst zwar noch nicht probiert
aber Versuch macht klug

Gruß Klaus

fungs_nologin

#6 Post by fungs_nologin »

Danke, ich werde mir das Programm mal reinziehen.

Post Reply