Statische Libraries, die Saferpay-Komponente und AMD64

Heute habe ich versucht auf einem Server die Saferpay-Komponente (das ist eine Software zur Abwicklung von Kreditkartenzahlungen) zu installieren. Leider haben es die Entwickler der Software anscheinend nicht geschafft, eine Version für die seit Jahren verfügbare 64-Bit Architektur anzupassen. Glücklicherweise gibt es ja freie Softwareentwickler, und so fand ich die Lösung bei FreeBSD.

Der dortige Paketbetreuer hat bereits 2004 (!) das Problem erkannt und behoben… da es auch andere Pakete betreffen kann, die auf einer 64-Bit-Architektur installiert werden sollen, ist die Lösung vielleicht auch anderswo einzusetzen.

Die Fehlermeldung lautet so oder so ähnlich:

relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC

Meist versucht das Programm, sich selbst an statische Libraries zu binden, was aber bei „shared objects“ nicht erlaubt ist. So habe ich das zumindest verstanden. Abhilfe schafft man, indem man die Bibliotheken nicht direkt angibt, sondern dem Compiler mitteilt, daß er einfach die zur Verfügung stehenden Libs benutzen soll.

Im Fall von Saferpay ist das in der Datei „idpapp.mk“, wo die statischen Libs zugewiesen werden:

LIBS = /usr/lib/libssl.a /usr/lib/libcrypto.a

Diese Zeile ändert man entsprechend zu dem hier

LIBS = -lssl -lcrypto

und schon läuft die Kompilierung durch…

Ein Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert