Hi Michael,
On 15.03.2012 14:30, Michael Renner wrote:
Moin,
ich habe hier ein Binärmodul das einen Apache mit libmath voraussetzt.
Die Mathe-Library heißt im Filesystem libm.(a|so|so...). Sie gehört zum
Standard-Installationszustand Deines Systems.
Eine Library wird von einem Apache-Modul eigentlich nie im Apache selbst
vorausgesetzt, sondern nur im installierten System. Es kommt eher
umgekehrt zu Problemen, wenn ein Modul und der Apache beide unabhängig
gegen eine Library linken und dabei verschiedene Versionen verwenden.
In Deinem Fall solltest Du beim Linken des Moduls einfach ein "-lm" mit
dazunehmen. "-labc" bedeutet "linke libabc ein", "-lb" steht also für libm.
Den Apache will/kann/darf ich nicht neu bauen. Ich frage mich: bekomme
ich libmath nachträglich in das Binärmodul rein? Nachträgliches Linken
oder so?
Wenn Du die Sourcen hast ja, siehe oben. Wenn Du keine Sourcen hast,
wird es eher schwierig. Der beste Workaround wird dann "LoadFile" sein.
Mit LoadFile kannst Du vor der LoadModule-Zeile für Dein Modul dem
Apache sagen, dass er eine Library laden soll.
http://httpd.apache.org/docs/2.2/en/mod/mod_so.html#loadfile
Bei Solaris gibt es "elfedit". Damit ginge das nachträgliche Eintragen
einer Library Dependency in ein schon gelinktes shared object file wohl.
Bei Linux gibt es das nicht so richtig. Erwähnt wird elfsh, aber das
scheint nicht stabil zu sein:
http://www.eresi-project.org/wiki/TheELFsh
Schließlich könnte man noch fiese Tricks machen. Wenn das Modul eine
andere Abhängigkeit zu einer Library eingetragen hat, könnte man eine
Dummy-Library mit dem gleichen SO Name bauen, die gar keine Symbole
enthält, aber selbst gegen die anderen Libs gelinkt ist. Würde ich aber
nicht machen, ist Arbeit und schwer zu durchblicken für andere.
Schließlich ginge noch LD_PRELOAD auf die libm als Environment-Variable
für den Apache-Prozess vor dem Starten setzen, etwa in der
envvars-Datei. Die Libs in LD_PRELOAD werden automatisch vor dem Starten
jedes Prozesses zuerst geladen und dann auch immer zuerst nach Symbolen
durchsucht.
Dankbar für Hinweise
:)
Lange Rede: ich würde auf LoadFile zurückgreifen.
Grüße sendet
Rainer
---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscr...@httpd.apache.org
For additional commands, e-mail: users-de-h...@httpd.apache.org