Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ Programmation _ librairies X11 pour OSX ...

Écrit par : Kenny 18 Nov 2002, 16:36

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

Écrit par : samsam 18 Nov 2002, 16:52

Bonjour,

Va faire un tour du côté de :

fink.sourceforge.net

C'est un peu laborieux à faire mais CA VAUT LE COUP ! Ca marche vraiment très bien. biggrin.gif

A+

Écrit par : Kenny 18 Nov 2002, 19:18

c'est tellement laborieux que j'arrive pas à l'installer ... :pleur2: :pleur2:

Écrit par : ReunionBoy 18 Nov 2002, 21:09

Si tu es sous Jaguar il n'existe pas encore de version officiellement compatible de fink. En plus il faut se tapper dselect et c'est vrai que c'est pas tout le temps évident.
Je te conseilles de te pencher sur : http://www.osxgnu.org/
Tout n'a pas été porté pour Jaguar (même quasiment rien en fait) mais t'as au moins XFree86 et les librairies qui vont avec, histoire de pouvoir compiler.

Écrit par : Kenny 18 Nov 2002, 21:36

okai, je vais demander a un de mes potes qui a l'ADSL de me le telecharger (50Mo)

Merci beaucoup

Écrit par : samsam 19 Nov 2002, 09:14

Bonjour,

Fink est TOTALEMENT compatible avec Jaguar !!! Je travaille avec Fink depuis que j'ai passé à Jaguar et AUCUN problème !!! ohmy.gif

Cela dit, je pense qu'il vaut mieux compiler la totalité des sources... :oops: Ce qui prend PLUSIEURS heures... Mais très franchement je crois que ça vaut le coup.

Tu peux consulter :

http://fink.sourceforge.net/doc/users-guide/install.php#src

rubrique "2.2 Installing the Source Distribution"

Bien sûr, il faut avoir installéau préalable les "Developpers Tools".

Dernier conseil, il faut suivre très rigoureusement les indications concernant l'installation et la mise en route de fink.

A+

Que la force soit avec toit... biggrin.gif

Écrit par : atarxerxes 19 Nov 2002, 09:54

Tu peux également trouver un pas à pas en français pour l'installation de fink sous Jaguar dans PrecisionMac n°3

Écrit par : Kenny 19 Nov 2002, 19:22

voila, je voulais juste savoir ce que c'était XFree86 (est ce que c'est un logiciel, un compilateur ou juste des librairies ??)
De plus si je fais une interface graphique avec X11 dans mon école, est ce que je peux faire tourner cette appli chez moi ???

En tout cas merci pour toutes vos reponses.

Écrit par : sky.x 19 Nov 2002, 22:40

J'en profite pour redemander c'est quoi la ligne de compile pour integrer les librairies Xlib.h ?
J'ai un vague souvenir de -Ilib ... mais bon j'ai pas trouve ca dans le man de cc.

merci

Écrit par : ReunionBoy 19 Nov 2002, 22:56

QUOTE
Bonjour,

Fink est TOTALEMENT compatible avec Jaguar !!! Je travaille avec Fink depuis que j'ai passé à Jaguar et AUCUN problème !!!  :o


Sur le site ils disent bien qu'il n'y a pas encore de distribution officiellement compatible avec Jaguar. Par contre je viens de voir qu'il y a les instructions pour installer Fink sur Jaguar (et merde ! j'avais pas vu avant !!! Bon faut que je regarde tout ça !)

QUOTE
Cela dit, je pense qu'il vaut mieux compiler la totalité des sources...   :oops: Ce qui prend PLUSIEURS heures... Mais très franchement je crois que ça vaut le coup.

Ouais bof ! Encore que mes cours me prennent pas mal de temps et je pourrais en profiter pour faire tourner mon ordi la journée.

Écrit par : sky.x 19 Nov 2002, 23:07

Pas compatible Jaguar ? J'ai eu a l'apple expo un CD donne d'Apple europe education qui contient une install Jaguar complete (la seule me semble t'il, sur le net on ne trouve que le patch...)

Je confirme donc que X11 est compatible jaguar (pour l'utiliser de maniere tres reguliere...et la pérsence de ce CD.)

Voila.

Écrit par : ReunionBoy 19 Nov 2002, 23:28

QUOTE
Pas compatible Jaguar ? J'ai eu a l'apple expo un CD donne d'Apple europe education qui contient une install Jaguar complete (la seule me semble t'il, sur le net on ne trouve que le patch...)

Je confirme donc que X11 est compatible jaguar (pour l'utiliser de maniere tres reguliere...et la pérsence de ce CD.)

Voila.


X11, oui (en fait XFree86).
Mais Fink, pas officiellement.
Jaguar est géré par fink mais tu n'as pas accès aux packages déjà compilés.

Écrit par : sky.x 19 Nov 2002, 23:34

Oups, j'ai repondu a cote..
Je vais me couche il est grand temps...

Si quelqu'un a la reponse a ma Q ca m'arrangerait beaucoups. Merci.

Écrit par : samsam 20 Nov 2002, 09:09

QUOTE
J'en profite pour redemander c'est quoi la ligne de compile pour integrer les librairies Xlib.h ?  
J'ai un vague souvenir de -Ilib ... mais bon j'ai pas trouve ca dans le man de cc.  


Personnellement je bricole un peu avec OpenGL sous X. Voici la ligne de commande me permettant d'inclure les lib dont j'ai besoin :

CODE
g++ triangle.cpp -o triangle -L/usr/X11R6/lib -L/sw/lib -lGL -lGLU -lglut -lX11 -lXmu -lXi -lm


Sous MacOSX, dans le terminal bien sûr, voici l'équivalent :

CODE
g++ triangle.cpp -o triangle -framework GLUT -framework OpenGL -lobjc


En espérant que ça répond un peu à ta question... :oops:

QUOTE
Sur le site ils disent bien qu'il n'y a pas encore de distribution officiellement compatible avec Jaguar. Par contre je viens de voir qu'il y a les instructions pour installer Fink sur Jaguar (et merde ! j'avais pas vu avant !!! Bon faut que je regarde tout ça !)  


Oui, c'est ce que je voulais dire quand j'ai parlé de "compiler la totalité des sources". Encore une fois, ça prend vraiment plusieurs heures mais CA VAUT LE COUP ! biggrin.gif

Enfin,

QUOTE
voila, je voulais juste savoir ce que c'était XFree86 (est ce que c'est un logiciel, un compilateur ou juste des librairies ??)  
De plus si je fais une interface graphique avec X11 dans mon école, est ce que je peux faire tourner cette appli chez moi ???


Je crois que ReunionBoy a déjà en partie répondu à la question : XFree86 est une implémentation libre et gratuite de X11.
De plus, il y a encore Gnome, WindowsMaker, KDE, etc c'est à dire (c'est trop simpliste, je sais, mais c'est un peu ça quand-même) des gestionnaires de fenêtres basés sur X11.

Donc, à priori, si tu développes une appli graphique dans ton école, tu devrais pouvoir la faire tourner chez toi. Bien sûr, il faudra recompiler la totalité du code chez toi pour être totalement sûr que ça marchera. Cela dit, tu devrais avoir, à mon avis, quelques soucis avec certaines "librairies" (cf. question de "Swecker") sad.gif

A+ biggrin.gif

Écrit par : sky.x 20 Nov 2002, 11:03

Merci samsam, en fait mes souvenir etaient faux, il faut bien mettre 2 "-L"...
Je chercherai les librairies a inclures (xlib.h c'est sûr mais pour l'autre je ne vois pas encore de quoi il sagit.)

Merci encore.

Écrit par : Kenny 20 Nov 2002, 20:30

Tout d'abord, j'ai installé XFree86 et ca marche pas mal du tout . Merci.

J'ai par contre un petit pb pour la compilation. Voila, j'ai fait un petit programme qui ouvre une fenetre et y dessine un rectangle vert. Pour compiler tout ca, j'utilise la commande "gcc".

Le probleme :
J'utilise la librairie Xlib.h qui fait elle meme appel à la librairie X.h.
Dans la librairie Xlib.h, il y a la commande :

#include <X11/X.h>

et que lorsque je compile, il me dit qu'il y a une erreur car il ne trouve pas la librairie X.h .
(ca fait ca pour d'autres appels de librairies)
(ca marcherais si on mettais #include "/usr/x11r6/include/x11/X.h")

Ca vient evidement d'un pb d'adressage des librairies.

Je voulais savoir si il y avait une option a ajouter à la commande "gcc" pour ne plus avoir ce probleme ...

J'ai reussi a faire fonctionner mon pgm en changeant toutes les adresses de toutes les librairies mais c'est vraiment trop penible et vraiment pratique.

Est ce que qq un a une solution ???

Merci

Écrit par : sky.x 20 Nov 2002, 21:54

C'est en fait ma question de tout a l'heure (au dessus.

Il faut mettre -L/usr/X11R6/lib ainsi qu'une autre "option" pour que gcc compile en utilisant les bonnes librairies.

Je me souviens que j'avais fais un gccg (g pour graphique) qui etait un lien vers cette ligne. Malmheureusement, c'etait sur mon DD de 60 Go qui est mort.

Il me semble que la reponse venais d'ici meme, (Nucleus me semble t'il ?) mais je ne retrouve pas le post... :pleur2: :pleur2:


[MAJ]
Voila j'ai retrouve le forum en question. Il faut mettre -I/usr/X11R6/include -L/usr/X11R6/lib
dans la ligne de commande. (en fait c'est meme moi qui ai donne l'astuce provenant d'un "expert" en Eiffel qui a écrit des librairies graphique pour ce langage. Nucleus a bien entendu corrige le probleme en question et complete ma reponse (j'avais mi X11 au lieu de X11R6 :oops:
Avec ca ca devrait aller mieux..

[MAJ]
[/quote]

Écrit par : sky.x 21 Nov 2002, 12:44

ARGH ! Ca ne fonctionne pas non plus :

J'ai un message "ld: Undefined symbols:"

Et toute une liste dans le style : "_XClearWindow"

voila ma ligne de commande pour compiler :

"gcc -I/usr/X11R6/include -I/usr/X11R6/include/X11 -L/usr/X11R6/lib /Users/swecker/Documents/fractale_x.c
"

SVP Aidez moi :pleur2: :pleur2: :pleur2:

Écrit par : samsam 21 Nov 2002, 14:08

QUOTE
J'ai un message "ld: Undefined symbols:"

Et toute une liste dans le style : "_XClearWindow"


Je ne sais pas du tout si cela servira à quelque chose mais essaie d'ajouter l'option :

CODE
-L/sw/lib


Cette option permet d'accéder aux lib installés par fink. Il faut savoir, en effet, que fink n'utilise pas les chemins "classiques" permettant d'accéder aux lib sous Linux, par exemple.

A+

Écrit par : robux4 21 Nov 2002, 14:16

Peut-être que XClearWindow est pas implémenté dans XFree86. Là il faudrait plutôt voir avec des développeurs qui utilisent XFree86, plutôt que Mac en particulier.
Ou au moins les gens de fink.

Écrit par : robux4 21 Nov 2002, 14:21

J'ai peut-être dit une connerie (et je vais peut-être en dire une autre).

En fait quand tu utilises ta ligne de commande, à la fin il va te générer un a.out qui sera ton executable. Est-ce que c'est bien ce que tu veux ? Auquel cas il faut peut-être le compiler avec une librairie qui se chargera d'appeler la bonne libraire du système pour toi. Sous Windows, ca serait linker avec le .lib correspondant. A priori ca doit être un truc du style "-lX11" à ajouter à ta ligne de commande.

Bref, il te manque peut-être une librairie.

Écrit par : robux4 21 Nov 2002, 14:22

Pour info, t'auras quasiment la même ligne de commande (au path près) sur tous les systèmes.

Écrit par : sky.x 21 Nov 2002, 15:36

Je viens d'assayer tout ca (ajouter -IX11, et -L/sw/bin) mais rien n'y fait.

Les fonction _XClearWindows (et companie) n'existent pas dans le fichier xlib.h mais non plus dans le source c a compiler.

Par contre, il existe bien des fonction sans le "underscore" devant dans les xlib.h.

Je pense qu'il y a une erreur (gcc ?) qui renome les fonction puis ne les trouve plus. C'est stuipide comme pensee, mais c'est ce qui me parrait le plus probable.

Écrit par : samsam 22 Nov 2002, 15:35

QUOTE
Je viens d'assayer tout ca (ajouter -IX11, et -L/sw/bin) mais rien n'y fait.

Les fonction _XClearWindows (et companie) n'existent pas dans le fichier xlib.h mais non plus dans le source c a compiler.


Diable, diable, ... ça devient difficile... :oops:

Les messages d'erreur de type "_XClearWindows", avec un "underscore", indiquent un problème lors de l'édition de liens. J'en ai pas mal bavé avec mes programmes OpenGL avec ce type d'erreurs...

C'est bien sûr un problème de "lib"...

Tu peux peut-être m'envoyer tes sources (s'il n'y a rien de confidentiel, bien sûr !!!) ou mieux encore, vu qu'on n'est pas loin, passe me voir au LORIA ! biggrin.gif

Samuel CRUZ-LARA
Bureau B226

Préviens-moi si tu viens !

Écrit par : MacJL 22 Jun 2003, 22:40

Salut...

Je déterre un peu le sujet, mais j'ai un problème similaire. Sauf que depuis, avec le X11 d'Apple, les choses ont un peu évoluées. J'ai installé X11 et le SDK de X11, et j'ai essayé de compiler un programme que j'avais fait à mon école sous Linux, et voilà ce qu'il donne:

QUOTE
[iBook-MacJL:~/Development/Tortue/tortue_op] macjl% make
gcc -Wall -g -c tortue.c
gcc -Wall -g -c lific.c
gcc -Wall -g -c utils.c
biblioX11.h:1: header file 'X11/Xlib.h' not found
biblioX11.h:2: header file 'X11/Xutil.h' not found
biblioX11.h:3: header file 'X11/keysym.h' not found
biblioX11.h:24: undefined type, found `Display'
biblioX11.h:25: undefined type, found `Screen'
biblioX11.h:26: undefined type, found `Visual'
biblioX11.h:27: undefined type, found `Window'
biblioX11.h:29: undefined type, found `GC'
biblioX11.h:30: undefined type, found `GC'
biblioX11.h:31: undefined type, found `XFontStruct'
biblioX11.h:32: undefined type, found `Colormap'
biblioX11.h:36: undefined type, found `Pixmap'
biblioX11.h:185: undefined type, found `XEvent'
biblioX11.h:187: undefined type, found `XEvent'
biblioX11.h:200: undefined type, found `XEvent'
cpp-precomp: warning: errors during smart preprocessing, retrying in basic mode
make: *** [utils.o] Error 1


Voilà...

Je fait quoi là??

@+

Écrit par : ReunionBoy 22 Jun 2003, 23:41

Ca serait pas mal que tu montres un coup ton makefile qu'on puisse voir ce qu'il y a dedans.

Écrit par : Driden 22 Jun 2003, 23:42

Tout ce que je peux te dire, et à mon avis c'est de la que ton problème vient; c'est que ton installation de X11 est incomplète car je viens de faire une recherche est les 3 librairies qui te manquent se trouve dans /usr/X11R6/include/X11 sur mon disque.

Écrit par : MacJL 23 Jun 2003, 08:52

Les 3 liibrairies qu'il me manquent sont aussi dans ce même répertoire chez moi! sad.gif

Pour le makefile, je vais le mettre ici, mais j'avoue que c'est ma prof d'info qui me l'a fait, car c'est la première fois que j'utilisais ça smile.gif

QUOTE
all: tortue

CC =gcc
CFLAGS = -Wall -g
LIBS = -L/usr/X11R6/lib -lX11 -lm

TARGET =tortue

tortue: tortue.o lific.o utils.o biblioX11.o commandes.o creation.o affichage.o
$(CC) -o tortue tortue.o lific.o utils.o biblioX11.o commandes.o creation.o affichage.o $(LIBS)



tortue.o: tortue.c declaration_fonctions.h
$(CC) $(CFLAGS) -c tortue.c
lific.o: lific.c declaration_fonctions.h
$(CC) $(CFLAGS) -c lific.c
creation.o: creation.c declaration_fonctions.h
$(CC) $(CFLAGS) -c creation.c
affichage.o: affichage.c declaration_fonctions.h
$(CC) $(CFLAGS) -c affichage.c
commandes.o: commandes.c declaration_fonctions.h
$(CC) $(CFLAGS) -c commandes.c
utils.o : utils.c declaration_fonctions.h
$(CC) $(CFLAGS) -c utils.c
biblioX11.o : biblioX11.c biblioX11.h
$(CC) $(CFLAGS) -c biblioX11.c

default: $(TARGET)

clean:
rm $(TARGET) *.o



Alors, une idée??

Écrit par : Driden 23 Jun 2003, 11:45

Comme tu peux le voir le répertoire de l'alias LIBS ne convient pas.

Écrit par : MacJL 23 Jun 2003, 11:49

il faut que je remplace:

LIBS = -L/usr/X11R6/lib -lX11 -lm

par

LIBS = -L/usr/X11R6/include/ -lX11 -lm


Ca suffit???

@+

Écrit par : Driden 23 Jun 2003, 11:50

Commences par remplacer par le bon répertoire et on verra apres.

Écrit par : sky.x 23 Jun 2003, 12:46

Exact. De plus pas besoin de fink pour en arriver la, X11 d'apple suffit. :fou:

Enfin, je sais que beaucoups ne jurent que par fink, mais X11 est aussi un free86 like compatible avec ses librairies.

PS : J'ai fait un tel projet aussi uniquement sous OSX, mefie toi du compilateur de l'ecole (version< 2.9), tout ne fonctionne pas, mon projet marchait sur mac, mais pas sur l'Unix de l'ecole (Sun)...

Écrit par : MacJL 14 Jul 2003, 19:10

C'est bien le X11 d'Apple que j'ai utilisé. smile.gif

Écrit par : MacJL 30 Aug 2003, 21:04

Je relance le sujet, car je ne m'en sort pas. Je veux bien remmetre les bons répertoires, mais qu'est-ce qu'il faut que je mette exactement?

Merci.

@+

Écrit par : ploute 1 Sep 2003, 23:16

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 smile.gif [oui il y a aussi des chemins par défaut : /usr/lib/, etc]

Bon maintenant ton makefile, oui, il est moisi biggrin.gif

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)

Écrit par : MacJL 2 Sep 2003, 16:37

Merci beaucoup pour tes explications! J'ai fait ce que tu as dit, mais il me reste un erreur (qui n'apparait pas quand je compile sous Linux):

QUOTE
macjl% makegcc -o tortue tortue.o lific.o utils.o biblioX11.o commandes.o creation.o affichage.o -L/usr/X11R6/lib/ -lX11 -lm
ld: Undefined symbols:
_ftime
make: *** [tortue] Error 1


Alors, je fait quoi là??

(PS: Je suis vraiment nul avec le makefile. Ce n'est d'ailleurs pas moi qui l'ai fait mais la prof d'info. De toute façon, on ne nous a jamais dit ce que c'était et à quoi ça servait! Je pense que cette année, on va nous l'expliquer pour qu'on puisse le faire nous même wink.gif )

Écrit par : ploute 2 Sep 2003, 18:50

Hum, j'ai une bonne et une mauvaise nouvelle. Mais la bonne, tu t'en doutes : tu as progressé smile.gif

Là tu en es à la phase de link, c'est à dire que tout a bien compilé, il a trouvé tous les headers, et a correctement compilé le code. Il a même été plus loin : il a trouvé toutes les librairies que tu lui as dit de chercher (X11 et la libm). Mais il lui manque un symbole, c'est à dire qu'il faudrait que tu lui indiques une autre librairie qui manque (avec un -l et au besoin un -L). Ca c'est la pure théorie.

En pratique, ce fameux symbole qui te manque, _ftime, c'est très très bizarre : moi je ne connais de _ftime que celui qui permet de mesurer le temps d'exécution d'un code avec VisualC++... Sous UNIX, c'est plutôt time. Mais si c'était vraiment du VisualC++, le compilo aurait râlé bien avant le link, dès la compilation : il n'aurait pas trouvé la fonction _ftime(). Alors donc là perso je sais pas trop, peux-tu trouver les éventuels appels à une fonction _ftime, ftime, ou time partout dans ton code ? Et les fichiers qui font #include <time.h> aussi, et nous dire un peu ce que c'est sensé faire ? Ton code est-il censé calculer combien de temps il prend à s'exécuter ?

[EDIT] Euuuh ok, le symbole _ftime, c'est probablement ftime() de timeb.h. C'est sensé être obsolète comme fonction.
man -S 3 ftime :
[...]
This interface is obsoleted by gettimeofday(2). It is available from the compatibility library, libcompat.

Conclusion : il faut que tu installes la lib compat.
http://www.publicsource.apple.com/projects/darwin/1.3/source/apsl/Libcompat-14.1.tar.gz
et il faut être membre, etc, enfin c'est gratuit mais pénible sad.gif

Écrit par : ploute 2 Sep 2003, 19:03

Enfin évidemment tu as le second choix de modifier le code et utiliser gettimeofday...

Écrit par : MacJL 2 Sep 2003, 22:36

En fait, il y a deux versions du programme. Une optimisée, et une sans optimisation. Et donc, on m'a dit d'utiliser la fonction ftime() pour mesurer le temps du prog avec ou sans l'optimisation. Je vais essayer de compiler un autre prog ou je n'ai pas fait appel à cette lib smile.gif

Merci beaucoup!

Écrit par : MacJL 2 Sep 2003, 22:45

Arghh!! En fait, la fonction ftime() n'est pas utilisée dans mon code, mais surtout dans la bibliotéque fournie par la prof d'info "BiblioX11.h" qui est un fait une simplification en français de la bibliothéque X11 :pleur2:

Bon, je vais donc m'enregister sur le site...

[edit] Arf! j'avais même pas capté que c'était le site de l'ADC... J'y suis déjà enregistré en fait!![/edit]

Écrit par : MacJL 2 Sep 2003, 23:00

Et comment ça s'installe ce truc au fait???? :-? :-? ohmy.gif

Écrit par : ploute 3 Sep 2003, 20:12

Tu télécharges et tu lis les instructions.... je sais plus, c'est un des premiers trucs que j'ai faits à l'install y'a 6 mois, et je crois bien ne pas être passé par celui de l'ADC. Chais pu. Y'a bien un README quand-même ? :fou:

Et pour ta librairie(*) biblioX11, tu as dit "bibliothèque BiblioX11.h", je te rappelle qu'un fichier .h n'est pas une bibliothèque. Bref, ton Makefile suggère que tu disposes du code (BiblioX11.c), rien ne t'interdit d'aller commenter ces fichues lignes qui appellent ftime(), attention juste à le faire intelligemment et ne pas commenter de déclaration d'une variable utilisée plus loin. M'enfin tu es censé savoir ce que tu fais... sinon, repasse à la case printf("Hello, world !n"); laugh.gif

(*) oui on devrait dire bibliothèque qui est une meilleure traduction du mot "library". M'enfin ça c vrai qd on parle de bouquins, en info on s'autorise souvent la mauvaise traduction biggrin.gif

Écrit par : MacJL 3 Sep 2003, 20:23

QUOTE
Tu télécharges et tu lis les instructions.... je sais plus, c'est un des premiers trucs que j'ai faits à l'install y'a 6 mois, et je crois bien ne pas être passé par celui de l'ADC. Chais pu. Y'a bien un README quand-même ? :fou:


Y'a même pas de readme là-dedans... Très bizarre comme truc...

QUOTE
Et pour ta librairie(*) biblioX11, tu as dit "bibliothèque BiblioX11.h", je te rappelle qu'un fichier .h n'est pas une bibliothèque. Bref, ton Makefile suggère que tu disposes du code (BiblioX11.c), rien ne t'interdit d'aller commenter ces fichues lignes qui appellent ftime(), attention juste à le faire intelligemment et ne pas commenter de déclaration d'une variable utilisée plus loin. M'enfin tu es censé savoir ce que tu fais... sinon, repasse à la case printf("Hello, world !n");   laugh.gif

(*) oui on devrait dire bibliothèque qui est une meilleure traduction du mot "library". M'enfin ça c vrai qd on parle de bouquins, en info on s'autorise souvent la mauvaise traduction  :D


En fait la fonction ftime() est utilisée quasiment partout dans ce truc. Elle sert à ralentir l'affichage pour bien voir ce qu'il se passe. Donc tout les ftime() ne sont pas commentables sans tout réécrire sad.gif

Va falloir que je réussisse à installer ce Libcompat...

@+

Écrit par : ploute 4 Sep 2003, 08:04

Okay si y'a pas de readme, alors c'est qu'il y a juste 2 ou 3 fichiers, non ? Quels sont-ils ? En gros il doit y avoir un .h et un libcompat.dylib.

Comment ça se présente l'archive ?

Écrit par : MacJL 4 Sep 2003, 17:10

Pour voir ce qu'il y a dans l'archive:

http://homepage.mac.com/macjl/photos/PhotoAlbum3.html

Voir la photo: Liste.gif

C'est un beau bordel ce truc :-?

@+

Écrit par : ploute 5 Sep 2003, 18:08

Okay, en fait tu as tout ce qu'il faut pour le compiler toi-même, et donc le modifier etc. Tu t'en fous : manifestement ils donnent la librairie pré-compilée ! -> libcompat.a

C'est une lib statique (.a au lieu de .dylib, non ce n'est pas qu'une question d'extension, le contenu est totalement différent biggrin.gif), c'est à dire que lorsque tu vas linker ton exécutable, elle sera incluse dedans, au lieu d'être simplement référencée pour être chargée à l'exécution du programme, mais ce sont là des détails qui ne t'intéressent probablement pas pour le moment.

Donc, si je comprends bien le rôle de cette lib, il n'y a besoin d'aucun header (en fait c'est ceux du système), tu te contentes de mettre juste le fichier libcompat.a dans /usr/lib, et d'ajouter -lcompat dans ta ligne de link !

Tiens-nous au courant, j'ai pu oublier qqch ou dire des bêtises.

Courage :wink:

Écrit par : MacJL 5 Sep 2003, 18:22

CODE
CC    =gcc

X11HEADERS = -I/usr/X11R6/include

CFLAGS    = -Wall -g $(X11HEADERS)

LIBS   = -L/usr/X11R6/lib/ -lX11 -lm -lcompat


-->

CODE
gcc  -o tortue  tortue.o lific.o utils.o  biblioX11.o commandes.o creation.o affichage.o -L/usr/X11R6/lib/ -lX11 -lm -lcompat

ld: Undefined symbols:

_ftime

make: *** [tortue] Error 1


sad.gif

Donc toujours pas...

Écrit par : ploute 6 Sep 2003, 12:31

Bon là ça devient du bricolage pour essayer de comprendre ce qui se passe :

et si tu mets ça ?

LIBS = -L/usr/lib/ -L/usr/X11R6/lib/ -lX11 -lm -lcompat
(normalement ld cherche forcément dans /usr/lib et il n'y a pas à le préciser...)

ou ça ?

LIBS = /usr/lib/libcompat.a -L/usr/X11R6/lib/ -lX11 -lm

mffff ça commence à me dépasser, il faudrait avoir un accès à ta machine, ou que tu déposes qqpart tes sources si c'est possible (apparemment c'est un exercice de TP, ça devrait pas poser de problème de droits tongue.gif), histoire que j'essaie de compiler ça chez moi et d'avoir tous les éléments pour piger.

Écrit par : MacJL 6 Sep 2003, 17:40

Les sources sont ici:

http://homepage.mac.com/macjl

Ca s'appelle Tortue.tgz. Dedans il y a trois dossiers. Il vaut mieux essayer de compiler "tortue_op"

Voilà....

Merci beaucoup!!!!!

Écrit par : ploute 6 Sep 2003, 22:29

Bon encore une fois g une bonne et une mauvaise nouvelle :

la bonne : j'arrive à compiler en virant ce fichu ftime tout pourri. (je n'y parviens effectivement pas, même avec la libcompat qui est censée régler ce prob d'après le man ftime, mais qui n'a pas de symbole _ftime dedans, et le source n'a pas de ftime...)
Il faut remplacer dans biblioX11.c la fonction systime :

CODE
unsigned long systime()

{

 /* OBSOLETE

    struct timeb t;

    ftime(&t);

    return(t.time*1000L+t.millitm);

 */

 struct timeval tp;

 struct timezone tz; // ne sert pas

 gettimeofday(&tp,&tz);

 return(tp.tv_sec*1000L+tp.tv_usec/1000);

}


Donc ça compile, et là c'est la mauvaise nouvelle : ça plante dès le début. Au premier appel de la fonction precalcul par la fonction init. Apparemment c'est pile poil l'appel. Au passage, c'est ptêt une histoire de goût mais alors c'est crade comme code biggrin.gif

J'ai pas le temps de débugger, c'est ton boulot :wink:

Bon courage.

PS : je sens aussi que dos2unix sera ton ami
[EDIT]J'oubliais : du coup tu peux virer le -lcompat[/EDIT]

Écrit par : MacJL 9 Sep 2003, 16:10

Ok... Je viens de changer BiblioX11.c . Ca complile bien, mais c'est vrai que ça plante dès le début. Ce qui est bizarre, car le même programme sous Linux fonctionne parfaitement.

Pour ce qui est de la propreté du code, disons que j'ai fait ça en 3 jours tout seul, alors que "les autres" ont fait ça en groupe de 4 en 2 semaines :fou: . Mais là je me cherche des excuses biggrin.gif

Un grand merci en tout cas, car maintenant, ça compile!!!

@+

Écrit par : MacJL 18 Jan 2004, 20:41

Je ressort le post à la surface:

J'ai été confronté au même problème cette année avec BiblioX11. Donc je me suis replongé dans cette foutue librairie, et finalement, ça marche. En fait, il suffit de rajouter un :

CODE
#include <unistd.h>


et tout fonctionne!!! Mon programme qui ne marchait pas l'année dernière sous Mac OS X fonctionne maintenant parfaitement!!! biggrin.gif

Si ça peut servir à quelqu'un wink.gif

@+

Écrit par : dulrich 18 Jan 2004, 21:12

t'arrives à faire un résumé de ce que tu as fait?
style ce que tu avais avant et ce que tu as maintenant

Écrit par : Ptinutz 23 Dec 2004, 14:45

Je profites de ce post sur les librairies pour poser ma petite question. J'ai installé récemment les librairies pour faire tourner un logiciel sous x11, il s'agissait de kxstitch qui demande une grande partie des librairies kde pour fonctionner. Je me suis donc atteler avec fink commander à les compiler-installer et c'est bon mon programme tourne.

Depuis j'ai voulu installer le compilateur fortran g14 et impossible, il demande absolument à compiler d'abord libjpeg et ensuite, j'ai le droit à ce message d'erreur:

Reading Package Lists...
Building Dependency Tree...
You might want to run `apt-get -f install' to correct these:
Sorry, but the following packages have unmet dependencies:
libjpeg: Depends: libjpeg-bin but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Si quelqu'un avait la gentillesse d'éclairer ma lanterne

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)