On Thu, Mar 25, 1999 at 10:16:30AM +0100, Laurent Cremmer wrote:
>
> Gtk test prog does not compile (je crois)
il faut que gtk soit installe et que le programme gtk-config
soit dans ton PATH.
> ThreadSafe Xlib not found (je crois aussi)
Le probleme vient du fait que x11amp utilise un code multi-threade, c'est
a dire parallelise pour fonctionner plus rapidement sur des architectures
multi-processeur. Cela implique une severe discipline de programmation, en
particulier concernant toutes les variables globales, qui ne peuvent pas
en environnement parallele etre accedees simultanement par deux processus
en meme temps. L'acces aux variables globales doit donc etre protege par
une exclusion mutuelle. Et la plupart du temps, on supprimera autant que
possible des variables globales au profit de variables locales.
Cela consiste a ecrire du code dit "reentrant".
Si le programmeur peut gerer correctement le code qu'il ecrit, il n'a en
revanche aucun controle sur les librairies avec lesquelles il lie son
programme. A tout hasard les librairies X11. Les librairies X11 fournies
par defaut ne sont pas compilees avec le flag -D_REENTRANT, ce qui fait
qu'elles ne sont pas utilisable en environnement multithreade.
La solution consiste donc :
* soit a recompiler les librairies de XFree86 avec ce sympathique flag.
* soit a recuperer des librairies toutes compilees avec ce flag, il
existe des URL ou on peut les recuperer, mais je n'ai plus les
adresses sous la main. quelqu'un peut aider ?
* Tenter de faire compiler x11amp avec les librairies non threadsafe
malgre tout en virant dans le script 'configure' toute la partie
ou cette verification est effectuee...
On trouve sur
www.dejanews.com des infos sur la question :
"
AFAIK, XFree86 (used on Linux, freebsd, etc.) **does** have threadsafe
X libraries as a compile option. Both Debian and Red Hat supply
libpthreads by default by default as part of libc I believe; I think Red
Hat actually compiles XFree with threadsafeness enabled, and Debian
currently doesn't, though that could change.
Any more information on the matter? Perhaps thread-safety has been
turned off because of bugs? Perhaps we are awaiting glibc 2.1? Perhaps
we need to wait until TID is implemented in the Linux kernel, so that
you can send a signal to a GROUP of "threads"?
"
Fabrice