twm's homepage logo
Von einem, der auszog die Heimat schätzen zu lernen ...
Mit Kylix standalone "Executables" erstellen
Deutsch English
Google
Search dummzeuch.de
Search WWW

Das Problem

Mit Borland Kylix erstellte Programme benoetigen eine Shared Library (libborqt-6.9.so), die in der Regel auf dem Zielsystem nicht installiert ist. Da Linux solche Shared Libraries nicht automatisch aus dem aktuellen Verzeichnis liest, muss diese entweder speziell installiert werden oder aber man muss die Environment-Variable LD_LIBRARY_PATH entsprechend setzen.

Die simple Loesung

Die simple Loesung ist ein Script wie das folgende:

                      
#!/bin/bash
QTLIBDIR=`dirname $0`
LD_LIBRARY_PATH="$QTLIBDIR:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
$0.bin
                    

Dieses Script geht davon aus, dass die Shared Libraries sich im gleichen Verzeichnis wie das Script und das Executable befinden und dass das Execurable die Extension .bin hat (in Kylix Project Options/Application/Output settings/Target file extension auf "bin" setzen), z.B.:

                    
[twm@twmceleron kyrdesktop]$ ll
total 8100
-rwxr-xr-x    1 twm  twm    1 Jan  4 18:28 kyrdesktop*
-rwxr-xr-x    1 twm  twm  728 Jan  4 18:38 kyrdesktop.bin*
-rwxr-xr-x    1 twm  twm 7350 Jan  4 17:45 libborqt-6.9.0-qt2.3.so*
lrwxrwxrwx    1 twm  twm    1 Jan  4 17:45 libborqt-6.9-qt2.3.so -> libborqt-6.9.0-qt2.3.so*
                  

Das Script ermittelt den Directory-Namen aus dem Parameter $0 und erweitert LD_LIBRARY_PATH um dieses Verzeichnis. Danach wird das Executable aufgerufen.

Nachteile:

  • Man hat immer eine Kopie von libborqt im Verzeichnis eines jeden Kylix-Programms rumliegen. Das ist aergerlich, aber angesichts heutiger Festplattenkapazitaeten kein wirkliches Problem mehr.
  • Eigentlich moechte man (zumindest als von Delphi verwoehnter Windows-User, wie ich es bin) nur ein einziges Executable auf den Rechner kopieren und starten. (Erinnert sich noch wer an das vbrun300.dll Generve aus der Zeit bevor Microsoft die Visual-Basic Runtime bei Windows mitgeliefert hat?)

makeself zur Hilfe

Makeself ist ein Shell-Script, welches selbstextrahierende tar-Archive erstellt. Dazu wird einem tar-Archiv ein Shell- Script vorangestellt, welches automatisch tar zum Auspacken aufruft und dann optional ein aus dem Archiv extrahiertes Script ausführt.

Man kann damit einfach ein selbstextrahierendes Tar-Archiv erzeugen, welches alle notwendigen Dateien in ein temporaeres Verzeichnis extrahiert und dann das Startscript aufruft. Danach wird dieses Verzeichnis wieder geloescht.

Beispiel:

Angenommen die oben gelisteten Dateien befinden sich im Unterverzeichnis kyrdesktop, makeself.sh befindet sich im Path. Man moechte ein selbstextrahierendes Tar-Archiv kyrdesktop.run erstellen, welches man unter z.B. KDE einfach durch einen Mausklick aufrufen kann, um die darin befindliche Anwendung zu starten.

Dazu ruft man makeself wie folgt auf:

                  
makeself.sh --nox11 --nowait kyrdesktop kyrdesktop.run "Beschreibung des Pakets hier" ./kyrdesktop
                

Die Parameter haben folgende Bedeutung:

--nox11
bewirkt, dass beim Aufruf des Archivs unter X kein xterm Fenster geoeffnet wird
--nowait
bewirkt, dass nach Beenden des Programms nicht auf eine Benutzereingabe gewartet wird.
kyrdesktop
ist der Name des Unterverzeichnisses, welches in das Archiv gepackt werden soll.
kyrdesktop.run
ist der Name des zu erstellenden Archivs
"Beschreibung ..."
ist eine Beschreibung des Archivinhalts
./kyrdesktop
ist das nach dem Extrahieren auszufuehrende Script (man beachte den vorangestellten Punkt!)

Dieser Aufruf erstellt eine neue Datei kyrdesktop.run und macht sie automatisch ausfuehrbar. Am Anfang der Datei steht ein Script, welches tar aufruft um den Rest des Scripts in ein temporaeres Verzeichnis zu entpacken. Danach wechselt es in dieses Verzeichnis und ruft dort ./kyrdesktop auf. Es wartet dann darauf, dass das Script zurueckkehrt (also das Programm beendet wird), und loescht das temporaere Verzeichnis wieder.

Es ist nun moeglich, die Datei kyrdesktop.run auf einen anderen Rechner zu kopieren und dort auszufuehren. Wenn man alles richtig gemacht hat, sind keine anderen Dateien notwendig.

Die kommerzielle Loesung

Falls die hier beschriebene Loesung nicht ausreicht, hilft vielleicht InstallMade. Ich habe keine Ahnung, ob es etwas taugt, aber es scheint der einzige Installer fuer Kylix-Programm zu sein, den es gibt.

(c) Copyright 2004 by Thomas Mueller, alle Rechte vorbehalten



This document was generated using AFT v5.096

letzte Änderung: 2012-10-14 twm
Post to del.icio.us Best Viewed With Open EyesValid XHTML 1.0!