Standard-Dialog
Linux-Programmierung mit Kylix, Teil 5: Standarddialoge und Verteilung
Depoyment
Das Verteilen und Installieren von Applikationen auf fremden Rechner ist immer eine Herausforderung. Im einfachsten Fall ist auf dem Zielrechner ebenfalls Kylix installiert. Sie können dann entweder den Quelltext samt aller notwendigen Dateien im Projektordner weitergeben und auf dem Zielrechner das Projekt innerhalb der Kylix-IDE kompilieren und ausführen.
Eine ähnliche Vorgehensweise ist unter Linux mit C/C++-Projekten üblich. Der Anwender übersetzt den Quelltext mit dem Dreischritt ./configure && make && make install. Es ist aber eher unwahrscheinlich, dass Kylix auf dem Zielsystem vorhanden ist. Sie müssen die Applikation also selbst kompilieren und das Ergebnis weitergeben.
Eine Kylix-Applikation benötigt allerdings eine ganze Reihen an Bibliotheken und gemeinsamen Objekten. Je komplexer Ihre Kylix-Applikation ist, desto mehr Dateien braucht sie auf der Zielplattform. Bei einfachen Programmen wie dem Mini-Editor ist das noch überschaubar, Sie müssen die Dateien aber mit Ihrer Applikation ausliefern.
Grafische Applikationen benötigen auf jeden Fall die Bibliothek libqtintf-6.5-qt2.3, zusätzlich oft libqt2.3 (mit Kylix installiert). Welche Bibliotheken Ihrem Programm fehlen, gibt es beim Start selbst aus. So führt ./Minieditor zu folgender Meldung:
libborqt-6.9-qt2.3.so: cannot open shared object file: Datei oder Verzeichnis nicht gefunden
Diese Bibliothek findet sich im Kylix-Installationsverzeichnis, auf dem Testrechner war das /usr/local/kylix3/bin/libborqt-6.9-qt2.3.so.
Pfad zu den Bibliotheken
Auf der Suche nach fehlenden Bibliotheken geht ein Linux-Programm die Verzeichnisse durch, die in der Umgebungsvariablen LD_LIBRARY_PATH spezifiziert sind. Danach sucht es eine Cache-Datei mit Namen /etc/ld.so.cache und dann in einer Liste, die in der Textdatei /etc/ld.so.conf steht. Wenn die Bibliothek bis dahin nicht lokalisiert wurde, durchsucht der dynamische Linker das /usr/lib-Verzeichnis.
Sie haben also drei Methoden zur Wahl, um dafür zu sorgen, dass Ihr Programm die benötigten Bibliotheken findet: * Die LD_LIBRARY_PATH-Umgebungsvariable setzen * Eintrag in /etc/ld.so.conf ergänzen * Bibliotheken in /usr/lib ablegen
Für den Mini-Editor ist LD_LIBRARY_PATH die beste Lösung. Sie gibt Ihnen die meiste Kontrolle darüber, wo sich Dateien befinden und braucht keine Root-Privilegien. Ein kleines Startup-Skript (Listing 4) kümmert sich um diese Aufgabe.
Dieses Skript erwartet die binäre Datei in einem bin-Verzeichnis und die zu ladenden Bibliotheken in einem lib-Directory. Ersetzen Sie das passende Installationsverzeichnis und den Namen der Anwendung und kopieren die benötigen Libryries in das lib-Verzeichnis. Um das Skript auszuführen, müssen Sie die Datei noch ausführbar machen: chmod a+x Skriptdatei. Sie können die Verzeichnisstruktur aus Start-Skript, bin und lib nun auf fremden Rechnern installieren und den Mini-Editor dort benutzen.
Listing 4
Startup-Skript
#!/bin/bash # Hier befindet sich die Applikation: app_install_dir=/hier/liegt/das/Verzeichnis app_path=$app_install_dir/bin/Minieditor app_ld_path=$app_install_dir/lib # Zuerst nach LD_LIBRARY_PATH-Variable suchen if [ -n "$LD_LIBRARY_PATH" ]; then # Gefunden: Weiteren Pfad anhängen LD_LIBRARY_PATH="$app_ld_path:$LD_LIBRARY_PATH" else # Nicht gefunden: Neu erstellen export LD_LIBRARY_PATH="$app_ld_path" fi # Sicherstellen, dass etwas für die LANG- # Umgebungsvariable eingetragen ist: if [ -z "$LANG" ]; then # Setze LANG auf einen passenden Wert export LANG=C fi # Anwendung ausführen $app_path $*
Der Autor
Ralph Steyer begann seine die Computerkarriere mit einem ZX81, den während des Mathematikstudiums ein Atari ST ablöste. Er arbeitet heute als Freelancer, Programmierer, EDV-Dozent und Fachautor. Zu erreichen ist er unter http://www.rjs.de.
Glossar
GUI
Das Graphical User Interface ist der sichtbare Teil eines Programms, mit dem der Benutzer per Maus und Tastatur Daten eingibt oder Texte liest.
Komponenten
Nach dem Baukastenprinzip fasst Kylix Oberflächenelemente, Dialoge und andere komplexe Gebilde zu Komponenten zusammen. Wie Bauklötzchen lassen sich Komponenten miteinander verbinden und als eine Einheit benutzen.
Form
Die Arbeitsfläche der Kylix-Oberfläche enthält unter anderem den Formulardesigner, mit dem Sie die Elemente der Oberfläche per Maus zusammensetzen können.
Exception
Trifft sie auf einen ungültigen internen Zustand, den sie nicht selbst behandelt kann, wirft eine Routine eine Exception. Der Code, von dem die Routine aufgerufen wurde, muss auf diese Exception geeignet reagieren. Exceptions können Fehler beim Leser einer Datei sein, etwa fehlende Rechte, oder eine Division durch Null.
Infos
[1] Kylix-Grundlagen, Installation und erste Schritte: LinuxUser 10/2002, S. 74 ff.
[2] Kylix-Projekte, Dateitypen, Objekte, Eigenschaften und Ereignisse: LinuxUser 01/2003, S. 78 ff.
[3] Object Pascal, Hauptprogramm und Units, Prozeuderen, Funktionen und Methoden: LinuxUser 04/2003, S. 72 ff.
[4] GUI-Programmierung aus dem Baukasten, Objektorientierung, Oberflächen-Komponenten: LinuxUser 11/2003, S. 83 ff.



