PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iDesk und Red Hat 8.0



der Dennis
03.02.03, 11:59
Hi alle,
mein erstes Post und gleich ein Hilferuf. Ich wollte idesk unter Red Hat 8.0 kompilieren und bekomme den folgenden Fehler nach Aufruf von "make".:


g++ -g -O2 -c Desk.cc -o Desk.o
In file included from Desk.cc:1:
Desk.h:9:25: X11/Xft/Xft.h: Datei oder Verzeichnis nicht gefunden
In file included from Desk.h:13,
from Desk.cc:1:
Icon.h:11: 'XGlyphInfo' is used as a type, but is not defined as a type.
Icon.h:20: syntax error before `*' token
In file included from Desk.cc:1:
Desk.h:55: syntax error before `*' token
Desk.h:56: 'XftColor' is used as a type, but is not defined as a type.
Desk.h:57: 'XftColor' is used as a type, but is not defined as a type.
Desk.h:58: 'XftColor' is used as a type, but is not defined as a type.
Desk.cc: In destructor `Desk::~Desk()':
Desk.cc:18: `Fore' undeclared (first use this function)
Desk.cc:18: (Each undeclared identifier is reported only once for each function
it appears in.)
Desk.cc:18: `XftColorFree' undeclared (first use this function)
Desk.cc:19: `Shadow' undeclared (first use this function)
Desk.cc:21: `Back' undeclared (first use this function)
Desk.cc: In member function `void Desk::LoadOptions()':
Desk.cc:47: `XFT_WEIGHT_BOLD' undeclared (first use this function)
Desk.cc:49: `XFT_WEIGHT_MEDIUM' undeclared (first use this function)
Desk.cc:51: parse error before `=' token
Desk.cc:56: parse error before `)' token
Desk.cc: At global scope:
Desk.cc:62: `Dpy' was not declared in this scope
Desk.cc:62: `Dpy' was not declared in this scope
Desk.cc:62: `Dpy' was not declared in this scope
Desk.cc:62: `Dpy' was not declared in this scope
Desk.cc:62: `Dpy' was not declared in this scope
Desk.cc:62: `Config' was not declared in this scope
Desk.cc:62: ISO C++ forbids declaration of `XftColorAllocName' with no type
Desk.cc:62: initializer list being treated as compound expression
Desk.cc:64: parse error before `if'
Desk.cc:67: `Dpy' was not declared in this scope
Desk.cc:67: `Dpy' was not declared in this scope
Desk.cc:67: `DDesk.cc:67: `Dpy' was not declared in this scope
Desk.cc:67: `Dpy' was not declared in this scope
Desk.cc:67: `Config' was not declared in this scope
Desk.cc:67: ISO C++ forbids declaration of `XftColorAllocName' with no type
Desk.cc:67: redefinition of `int XftColorAllocName'
Desk.cc:62: `int XftColorAllocName' previously defined here
Desk.cc:67: initializer list being treated as compound expression
Desk.cc:69: parse error before `if'
Desk.cc:84: syntax error before `.' token
Desk.cc:85: syntax error before `.' token
Desk.cc:86: syntax error before `.' token
Desk.cc:87: `Dpy' was not declared in this scope
Desk.cc:87: `Dpy' was not declared in this scope
Desk.cc:87: `Dpy' was not declared in this scope
Desk.cc:87: `Dpy' was not declared in this scope
Desk.cc:87: `Dpy' was not declared in this scope
Desk.cc:87: `xrdc' was not declared in this scope
Desk.cc:87: ISO C++ forbids declaration of `XftColorAllocValue' with no type
Desk.cc:87: initializer list being treated as compound expression
Desk.cc:88: ISO C++ forbids declaration of `HighContrast' with no type
Desk.cc:89: parse error before `}' token
Desk.cc:94: ISO C++ forbids declaration of `HighContrast' with no type
Desk.cc:94: redefinition of `int HighContrast'
Desk.cc:88: `int HighContrast' previously defined here
Desk.cc:95: parse error before `}' token
Desk.cc:104: ISO C++ forbids declaration of `Transparency' with no type
Desk.cc:104: `Config' was not declared in this scope
Desk.cc:106: parse error before `if'
Desk.cc: In member function `void Desk::ArrangeIcons()':
Desk.cc:199: parse error before `->' token
Desk.cc:200: `I' undeclared (first use this function)
Desk.cc:203: parse error before `->' token
Desk.cc: At global scope:
Desk.cc:210: parse error before `}' token
make: *** [Desk.o] Fehler 1

Das Problem sind also die Bibliotheken von Xft. Ich hab dieses Forum nach Lösungen durchsucht und auch gegoogled. Der Lösungsansatz mit dem Umbenennen im Makefile von Xft nach Xft2 hat nicht gefunzt. Die Symlinks auch nicht und ich hab dann noch versucht in desk.cc Xft in Xft2 umzubennen. Dann war ich mit meinem Latein am Ende. Weiss hier jemand wie ich das Makefile oder den Source Code (Gott bewahre! ; )) so abändern kann das die Xft Bibliotheken gefunden werden?

Ich danke für eure Mühe...

der Dennis

kth
03.02.03, 19:56
Vorausgesetzt, dass alle für die Kompilierung benötigten Dateien bzw. RPM-Pakete installiert sind, sollte ein make nach folgenden Änderungen klappen:

Im Makefile, Zeilen 3 und 4:
cflags = -g -O2 `xft-config --cflags`
libs = `imlib-config --libs` `xft-config --libs`In Desk.h schiebst du die Zeile
#include <png.h> mindestens 2 Zeilen in Richtung des Dateianfangs, d. h. zwischen irgendein Zeilenpaar vor
#include <X11/Xft/Xft.h>
Hintergrund: Die Headerdatei pngconf.h, die von png.h eingebunden wird, lässt den C(++)-Präprozessor absichtlich in einen Parsierungsfehler laufen, falls setjmp.h bereits eingebunden wurde (was hier indirekt durch Xft.h geschieht).

Die Präprozessor-Warnungen "changing search order for system directory..." dürfen hier ignoriert werden, da das xft-config --cflags "übereifrig" ist und mehr Header-Pfade als explizit nötig angibt.

der Dennis
03.02.03, 20:38
kth! Es hat geklappt! Ich danke dir sehr! Leute wie du sind der Grund dafür das ich diese Open Source Community liebe...
Werde das dann mal in die ganzen Bookmarks posten die ich in den letzten 3 Tagen angesammelt habe... ;)

der Dennis, hocherfreut.

kth
03.02.03, 20:55
Gern geschehen. ;)

--Kai