Auf Fedora kompiliert, auf Debian laufen lassen!
$ ldd wirow
linux-vdso.so.1 (0x00007ffd40571000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f8678aa2000)
libm.so.6 => /lib64/libm.so.6 (0x00007f86789c6000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f86789ab000)
libc.so.6 => /lib64/libc.so.6 (0x00007f86787a2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8678cef000)
$ ldd /lib64/libc.so.6
/lib64/ld-linux-x86-64.so.2 (0x00007f9519cae000)
linux-vdso.so.1 (0x00007ffcd39c3000)Hier ist erschtlich, dass der Interpreter sowohl von wirow wie von libc.so.6 refernziert wird.
Es gilt der Debian Interpreter /lib64/ld-linux-x86-64.so.2 durch den Interpreter der Linux Distribution zu ersetzen, ohne negative Rückwirkung auf das Original Debian System zu erhalten.
...
--set-interpreter INTERPRETER
...
--replace-needed LIB_ORIG LIB_NEW
patchelf --replace-needed libc.so.6 /opt/lib-wirow/libc.so.6 wirow
patchelf --replace-needed libm.so.6 /opt/lib-wirow/libc.so.6 wirow
patchelf --replace-needed libgcc_s.so.1 /opt/lib-wirow/libgcc_s.so.1 wirow
patchelf --replace-needed libstdc++.so.6 /opt/lib-wirow/libstdc++.so.6 wirow
patchelf --set-interpreter /opt/lib-wirow/ld-linux-x86-64.so.2 wirowDie einbezogene Biliotheken beinhalten auch Verweise auf Bibliotheken. “Patchen” der Bibliotheken ist auch notwendig
patchelf --print-interpreter \<Datei>
Gibt an ob ein interpreter eingesetzt wird
patchelf --print-needed \<Datei>
gibt eine Liste der einbezogene Biliotheken
ldd \<Datei>
zeigt auch den Pfad der einbezogene Datei an.
Bein Aufruf vom Program, wird nach der Interpreter geschaut, er wird vom Verpzeichnis /opt/lib-wirow/ geladen Danach werden die Bibliotheken aus dem Ordner /opt/lib-wirow/, sie sind mit ein absoluten Pfad versehen.
Die bibliotheken können auch relativ zum Aufrufverzeichnis des Programs angegeben werden. In dem Fall muss mindestens ein “/” in der Referenz vorhanden sein, z.B. “./lib-wirow”.
Wenn das Ausführbare Program aus der Verzeichnis /var/lib/wirow aufgerufen wird und lie Bibliotheken sich im Verzeichnis /var/lib/wirow/lib-wirow, sollte es funktionnieren.