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

Antwort per Email an