Mobilesteuerung: Blättern oben links oder rechts; Fulllscreen Mode oben mitte.
Tastensteuerung: Blättern: '→' '←' '↑' '↓'; Farbe Modus: 'm'
Anzeige abschalten (blank): 'b'
Virtuel Pointer ein/aus (laser): 'l'
Steuerelemente: Anzeige ein/ausschalten: unten recht oder 'v'
A B M

Cross-Linux

Jean-Jacques Sarton

Program auf eine andere Linux System ausführen.

Auf Fedora kompiliert, auf Debian laufen lassen!

Warum

Wirow

Was sagt uns ldd

$ 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.

/lib64/ld-linux-x86-64.so.2

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.

patchelf

Aus den patchelf Manual

...
--set-interpreter INTERPRETER
...
--replace-needed LIB_ORIG LIB_NEW

Was ist zu tun?

Patch Beispiel

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 wirow

Die einbezogene Biliotheken beinhalten auch Verweise auf Bibliotheken. “Patchen” der Bibliotheken ist auch notwendig

Biblothek patchen

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.

Von Fedora zu Debian

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.