![]() |
Bienvenue invité ( Connexion | Inscription )
Il est interdit de poster directement à la racine de ce forum.
Veuillez créer votre topic dans le sous-forum approprié.
![]() |
![]()
Message
#1
|
|
![]() Macbidouilleur de vermeil ! ![]() ![]() ![]() ![]() Groupe : Membres Messages : 1 075 Inscrit : 21 Feb 2002 Lieu : Drôme (26) Membre no 2 097 ![]() |
Voila, je suis étudiant en école d'ingénieur et j'ai un projet en langage C à réaliser. Ce projet contiendra une interface graphique utilisant la librairie X11 (propres au systemes Unix)
Ma question est de savoir si une telle lmibrairie est imp)lementée à OS X ou , dans le cas contraire, si il était possible de l'installer ... Merci |
|
|
![]() |
![]()
Message
#2
|
|
![]() Macbidouilleur de vermeil ! ![]() ![]() ![]() ![]() Groupe : Membres Messages : 1 293 Inscrit : 25 Apr 2003 Membre no 7 294 ![]() |
Attention, confusion entre librairies et headers !
Il ne faut surtout pas mettre "LIBS = -L/usr/X11R6/include/ -lX11 -lm" ! Bon une petite explication sur les options du compilo concernant les libs et les headers : un header, c'est un fichier donnant la "signature" des fonctions d'un code. Il se présente sous la forme d'un fichier .h. Une librairie, c'est ce qui contient le vrai code respectant lesdites signatures. Par exemple pour compiler une appli qui utilise X11, il faut les headers X11 pour que le compilo il vérifie les fonctions X11 que tu appelles. Ensuite, quand tout le code est compilé, il faut créer l'exécutable (ou la librairie si on fait une lib) en "linkant" avec les librairies X11. Alors l'option -I c'est pour indiquer au compilo dans quels répertoires aller chercher les headers. Par défaut il va dans des endroits comme /usr/include, /usr/local/include, etc. Pour X11, il faut ajouter le chemin /usr/X11R6/include qui contient tous les headers de X11. On peut ajouter plusieurs chemins avec plusieurs -I. Ainsi, quand le compilo voit dans le code un "#include <toto.h>" il va chercher un fichier nommé toto.h dans tous les répertoires par défaut et indiqués par les -I. Et pour "#include <truc/tutu.h>" il va chercher les répertoires nommés truc qui possèdent un fichier tutu.h. De même, l'option -L c'est pour les libs : on indique les chemins des répertoires contenant les libs. Pour X11, elles sont dans /usr/X11/lib, et pas du tout dans /usr/X11R6/include, d'où ton erreur (le makefile est bon de ce point de vue). Et l'option -l c'est pour indiquer quelles librairies on utilise (link), et le compilo va les chercher... dans les chemins indiqués par les -L, la boucle est bouclée ![]() Bon maintenant ton makefile, oui, il est moisi ![]() LIBS est bon, il indique bien le chemin où aller chercher la lib X11 (et dit aussi de linker avec une lib de math trouvable dans le chemin par défaut). Mais il manque les headers ... Une solution, ajouter avant CFLAGS : X11HEADERS = -I/usr/X11R6/include Puis modifier CFLAGS : CFLAGS= -Wall -g $(X11HEADERS) |
|
|
![]() ![]() |
Nous sommes le : 1st August 2025 - 15:52 |