SuSE Support-Datenbank
Titel: Motif 1.2 -Programme unter XFree3.1 Compilieren

Übersicht
Stichwortsuche
History
Versionen
Kategorien
Alle Artikel
English
Motif 1.2 -Programme unter XFree3.1 Compilieren
Bezieht sich auf
XFree86: Version 3.1
Motif: Version 1.2
-
Die Bibliotheken unter
/usr/X11R6/lib
(die per Default gelinkt
werden) sind ungeeignet. Das ist auch nicht arg verwunderlich, da ja Motif
1.2auf X11R5 `zugeschnitten' ist. Zwar ist X11R6 abwärtskompatibel, aber die
Erfahrung hat schon früher gezeigt, daß der Teufel hier im Detail steckt und
Konstruktionen wie `Motif 1.2 + X11R6' (erstmal) nicht funktionieren.
-
Linkt man mit
-L/usr/X11R5/lib
, so läuft das Programm zunächst, es
ist aber folgender Bug bekanntgeworden: Unmanagt man einen
XmBulletinBoard-Dialog (oder Subclass), an dem mehr als ein Popup-Child
hängen (egal ob popped-up oder popped-down), so stürzt das Programm mit der
Meldung `Error: Object "(null)" does not have windowed ancestor
'
ab
(manchmal auch mit Core-Dump).
-
Laut Support von S.u.S.E verspricht Metrolink die Funktionsfähigkeit
seines Motif nur mit XFree86-2.1.1. Tatsächlich sind die X11R5-Libraries von
XFree86-2.1.1 und XFree86-3.1 unterschiedlich!
-
Die XFree86-2.1.1-Libraries sind auf der 11/94-CD in
`/cdrom/slackware-2.1.0/contrib/XFree86-2.1.1/x3/xf_lib.tgz
'
verfügbar. Zu
beachten ist allerdings, daß dieses Paket nicht wie gewohnt mit
pkgtool
installiert werden darf, da sonst die bereits vorhandenen
X11R6-Libraries von XFree86-3.1 überschrieben werden. Am besten, man
installiert die XFree86-2.1.1-Bibliotheken in ein separates Verzeichnis
(nennen wir es DIR). Das Programm läßt sich nun mit
gcc -static ... -lXm -LDIR -lXt -lX11 -o ...
binden.
Etwas problematisch wird es, wenn die Anwendung dynamisch gebunden
werden soll, denn die Dateinamen für die `neuen' X11R5-Sharable-Objects sind
identisch mit denen für die alten (nämlich `lib{X11,Xt}.so.3'). Da viele
X-Programme {\tt (DNDDemo cutpaste dogs fileview helloint hellomotif
motifanim motifbur motifgif motifshell mwm periodic pict pixmap textedit
uil uilsymdump xbmbrowser xfishtank xgrab xgrabsc xmapdef xmbind xmdialogs
xmeditor xmfonts xmforc xmform xmgetres xmlist xmmap xmmore xmpiano
xmprotocol xmter xmtravel ...)} die `neuen' X11R5-Libraries sehen wollen,
kann man diese nicht einfach durch die alten ersetzen. Andererseits
funktioniert die eigene Motif-Anwendung aber nur mit den alten Libraries
zuverlässig.
Einzig denkbare Loesung waere, unmittelbar vor dem Start des Programms den
`LD_LIBRARY_PATH' auf die alten Libs zu verbiegen und anschliessend wieder
zu `unset'ten. Das ist natuerlich alles andere als elegant.
Sicherheitshalber kann das Programm in seiner `main ()'-Funktion ja als
erstes pruefen, dass `LD_LIBRARY_PATH' gesetzt ist und tatsaechlich die alte
Bibliothek geladen wurden.
Ob statisch oder dynamisch gelinkt, es triff noch ein weiteres Problem
mit den alten X11R5-Libraries auf: Sind die Dateien
{\tt `/usr/X386/lib/X11/nls/{nls.dir nls.alias ...}'}
nicht vorhanden und lesbar, so stuerzt das Programm mit einer Segment
Violation ab. Laut Motif-FAQ ist dies ein Bug in `libX11'. Diese Dateien
finden sich ebenfalls in `{\tt /cdrom/slackware-2.1.0/contrib/XFree86-2.1.1/
x3/xf_lib.tgz}' und muessen entsprechend installiert werden. Am besten,
das Programm prüft wiederum, ob diese Dateien vorhanden sind (alternativ
gilt auch $XNLSPATH) und bricht gegebenenfalls mit einer entsprechenden
Meldung ab.

Stichwörter: OSF, MOTIF

Kategorien:
X-Applikationen

Übersicht
Stichwortsuche
History
Versionen
Kategorien
Alle Artikel
English
SDB-kfr_2, Copyright SuSE GmbH, Nuremberg, Germany
SuSE GmbH - Zuletzt generiert: 03. Oct 1999 22:32:52
by maddin
with sdb_gen 1.00.0