Après OCamL, souci avec C arf...

Kaori

Membre confirmé
13 Janvier 2006
38
0
Kikoo à tous,

Bon voilà mon problème est relativement simple à expliquer mais quand à le résoudre je ne sais pas...

Je veux programmer en C sous MAC OS 10.4. J'y arrive très bien avec Aquamacs Emacs. Ceci dit, j'ai tenté d'installer une bibliothèque graphique privée et voilà le log sur lequel je tombe lors de la commande make :

http://www.kaory.hbg.fr/code.html

Apparemment, il manquerait quelquechose mais je ne vois pas quoi....

Merci d'avance pour votre aide...;)
 
Tu lui demandes d'exécuter la commande pkg-config qu'il ne connait pas. Si tu veux utiliser gtk, il va falloir auparavant le télécharger, le compiler (via Fink ou MacPort) et configurer correctement ton environnement pour que le shell puisse trouver les utilitaires gtk comme pkg-config.

Bon courage ... d'autant que je ne sais pas s'il existe une version de gtk qui fonctionne correctement sur Mac OSX. :confused: (contrairement à QT qui est parfaitement fonctionnel)

PS : les fichiers .h ne sont pas des bibliothèques, ce sont juste des "headers" qui déclarent les symboles qui sont définis dans la bibliothèque qui elle se trouve en général dans /usr/lib ou dans un framework, et qui s'appellent lib<..>.dylib ou .so.
 
Kikoo,

Merci pour la r&#233;ponse.

Le fait est que j'ai install&#233; GTK+ pour MacOSX, t&#233;l&#233;charg&#233; l&#224;
Ceci dit, il est marqu&#233; que c'est une version PPC or je suis sous MAC Intel est-ce que &#231;a joue ? Si oui, quelle alternative me proposez-vous?

Sinon, avec QT, je suis cens&#233;e &#234;tre en mesure d'installer mes propres biblioth&#232;ques/ fichiers.h ?

Merci encore ^^
 
Ceci dit, il est marqué que c'est une version PPC or je suis sous MAC Intel est-ce que ça joue ?
Oui
Si oui, quelle alternative me proposez-vous?
Il faut compiler la librairie pour Intel
Sinon, avec QT, je suis censée être en mesure d'installer mes propres bibliothèques/ fichiers.h ?
Oui, comme avec GTK. Si tu as installé GTK proprement, a priori il faut juste modifier ta variable PATH pour qu'elle pointe vers le répertoire où se trouve pkg-config.
 
Kikoo,

Merci pour la r&#233;ponse.

Le fait est que j'ai install&#233; GTK+ pour MacOSX, t&#233;l&#233;charg&#233; l&#224;
Ceci dit, il est marqu&#233; que c'est une version PPC or je suis sous MAC Intel est-ce que &#231;a joue ? Si oui, quelle alternative me proposez-vous?

Sinon, avec QT, je suis cens&#233;e &#234;tre en mesure d'installer mes propres biblioth&#232;ques/ fichiers.h ?

Merci encore ^^

http://developer.imendio.com/projects/gtk-macosx

enleve les pkg-config de des tes scripts
et passe les toi-meme cflags ldflags
patch ton makefile ?

pkg_config n'a aucun interet avec Darwin/OSX
pkg_config == package config : comment est -il d&#233;ploy&#233; (libs includs bins flags) sur l'arbo et est-il repositionnable ? cela sert juste &#224; &#231;a

si tu veux pkg config boot en xwindow avec fink et travail avec gtk et gnome
ou install un Linux
 
Kikoo

Je ne vois pas ce que tu veux dire par

enleve les pkg-config de des tes scripts
et passe les toi-meme cflags ldflags
patch ton makefile

Sinon si tu dis que

pkg_config n'a aucun interet avec Darwin/OSX
pkg_config == package config : comment est -il d&#233;ploy&#233; (libs includs bins flags) sur l'arbo et est-il repositionnable ? cela sert juste &#224; &#231;a

alors comment installer mes fichies bibli persos ?!

Sinon j'ai jete un oeil sur ton lien ... ca a l'air d'etre une bonne solution seulement je bloque par manque de droit. Ils disent :
Make sure your user has write access to the latter directory.
Je ne vois pas comment avoir ces droits. Apparemment, passer en mode root n'est pas suffisant arf...

Encore merci pour vore aide ^^
 
Niaaaaaah vais devenir folle arf...

Bon, l&#224; j'ai resolu le probleme de pkgconfig en passant par Darwin ^^ (une shtit merveille cette brave bete, elle m'aa sauve pour OCaml aussi - fink en fait tout autant je crois). J'ai juste installe le port gtk2 et il s'est charge du reste.

Du coup, j'ai pu "compiler" correctement mon fichier .h

MAIS (ce brave mais arf) lorsque j'essaie de compiler un fichier .c faisant appel &#224; cette "bibli" perso, je me retrouve avec un autre morceau de code. Le truc, c'est qu'il m'annonce ne pas trouver un fichier qui pourtant existe a l'endroit indique. Je ne vois plus quoi faire :

http://www.kaory.hbg.fr/code.html

A un certain niveau, je passe par un dossier alias (raccourcis), est ce ca pose probleme peut etre ?

Merci encore pour votre aide ...
 
pkgconfig en passant par Darwin

? ca veut dire quoi ? sachant que ma premiere pre-version de OSX &#233;tait une Rhapsody DR2 1997 ?
donc pourrais tu m'expliquer ce que tu entends par la :)

POUR le reste du charabia


je ferais la meme r&#233;ponse ldflags cflags
c'est la ton probleme apprend les flags de ton compilateur

le BABA avant d'utiliser des language compilable c'est savoir les compiler
donc connaitre son compilateur et savoir faire un makefile ce qui automatise les procedures

-I/path/TO/Include/dir

exemple d'un fichier de config pour pkg_config
c'est un gestionnaire de packet X la tu travailles avec un deploiement non conventionnel un framework

-------------------------------------------------------------------------
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include


Name: libexslt
Version: 0.8.9
Description: EXSLT Extension library
Requires: libxml-2.0
Libs: -L${libdir} -lexslt -lxslt -L/usr/lib -lxml2 -lz -lpthread -liconv -lm
Cflags: -I${includedir}
-------------------------------------------------------------------------


va dans mon bordel
 
Arf, certes j'ai progresse depuis que je me prends la tete sur ces installations mais j'avoue le principe du flag, j'y connais rien ... :(
a defaut d'une explication particulierere, tu n'aurai pas un bon tutoriel sur le sujet (je viens de chercher je ne suis tomb&#233; sur rien d'interessant >_<)

Sinon, je pense avoir saisi au moins un point : c'est dans le Makefile qu'il y a du changement a faire. Je te mets le contenu histoire d'y voir plus clair...

Bloc de code:
LIB     = ../lib
INCLUDE = ../include

all    : $(INCLUDE)/graphics.h $(LIB)/libgraphics.a test

$(INCLUDE)/graphics.h : graphics.h
    cp graphics.h $(INCLUDE)/graphics.h


$(LIB)/libgraphics.a : graphics.o
    ar -rv $(LIB)/libgraphics.a graphics.o

graphics.o : graphics.c
    gcc -Wall -g -c graphics.c -I$(INCLUDE) `pkg-config --cflags gtk+-2.0`


test    : test.c $(LIB)/libgraphics.a
    gcc test.c -Wall -g -o test -I$(INCLUDE) -L$(LIB) `pkg-config --cflags --libs --cflags gtk+-2.0` -lpthread -lgraphics

clean    :
    rm -f *.o test $(LIB)/libgraphics.a $(INCLUDE)/graphics.h
Sinon pour pour l'histoire de Darwin, j'ai donc telecharger le package source ici
Une fois dezipee, je me suis place dans le dossier cree dans le terminal et tape

port search gtk+2

Il m'a sorti gtk2, que j'ai installe. Il a charge de nombreux ports dependants dont pkgconfig. En tapant port search pkgconfig, tu tombes sur le port pkgconfig precisement ^^. Avec la commande sudo port install <nom de port>, on installe le tout . J'avais reussi a faire la meme chose avec Fink mais il m'a fallu cherche un a un les ports dependants alors que darwin s'en est charge tout seul ^^
Du coup lorsque j'ai retape make, il a tout trouve cette fois.

Voili voilou


Merci encore pour l'aide
 
Arf, certes j'ai progresse depuis que je me prends la tete sur ces installations mais j'avoue le principe du flag, j'y connais rien ... :(
a defaut d'une explication particulierere, tu n'aurai pas un bon tutoriel sur le sujet (je viens de chercher je ne suis tomb&#233; sur rien d'interessant >_<)

Sinon, je pense avoir saisi au moins un point : c'est dans le Makefile qu'il y a du changement a faire. Je te mets le contenu histoire d'y voir plus clair...

Bloc de code:
LIB     = ../lib
INCLUDE = ../include

all    : $(INCLUDE)/graphics.h $(LIB)/libgraphics.a test

$(INCLUDE)/graphics.h : graphics.h
    cp graphics.h $(INCLUDE)/graphics.h


$(LIB)/libgraphics.a : graphics.o
    ar -rv $(LIB)/libgraphics.a graphics.o

graphics.o : graphics.c
    gcc -Wall -g -c graphics.c -I$(INCLUDE) `pkg-config --cflags gtk+-2.0`


test    : test.c $(LIB)/libgraphics.a
    gcc test.c -Wall -g -o test -I$(INCLUDE) -L$(LIB) `pkg-config --cflags --libs --cflags gtk+-2.0` -lpthread -lgraphics

clean    :
    rm -f *.o test $(LIB)/libgraphics.a $(INCLUDE)/graphics.h
Sinon pour pour l'histoire de Darwin, j'ai donc telecharger le package source ici
Une fois dezipee, je me suis place dans le dossier cree dans le terminal et tape

port search gtk+2

Il m'a sorti gtk2, que j'ai installe. Il a charge de nombreux ports dependants dont pkgconfig. En tapant port search pkgconfig, tu tombes sur le port pkgconfig precisement ^^. Avec la commande sudo port install <nom de port>, on installe le tout . J'avais reussi a faire la meme chose avec Fink mais il m'a fallu cherche un a un les ports dependants alors que darwin s'en est charge tout seul ^^
Du coup lorsque j'ai retape make, il a tout trouve cette fois.

Voili voilou


Merci encore pour l'aide

il te manque un chemin -I pour dire ou sont plac&#233;s les headers de glib
pour le reste il n'y a pas vraiment de tutorial c'est &#224; toi de comprendre
c'est comme si tu demandais la doc d'un noyeau type freeBSD &#231;a n'existe pas
il faut rentrer dedans c'est tout
 
Bon apres tentative de comprehension en etudiant le debut de ton Makefile et celui du mien, j'ai fini par ajoute ce -I au niveau de test (en gras). Je vais tester de suite ...

Bloc de code:
LIB     = ../lib
INCLUDE = ../include

all    : $(INCLUDE)/graphics.h $(LIB)/libgraphics.a test


$(INCLUDE)/graphics.h : graphics.h
    cp graphics.h $(INCLUDE)/graphics.h


$(LIB)/libgraphics.a : graphics.o
    ar -rv $(LIB)/libgraphics.a graphics.o
 

graphics.o : graphics.c
    gcc -Wall -g -c graphics.c -I$(INCLUDE) `pkg-config --cflags gtk+-2.0`


test    : test.c $(LIB)/libgraphics.a
    gcc test.c -Wall -g -o test -I$(INCLUDE) -L$(LIB) `pkg-config --cflags --libs --cflags gtk+-2.0` -lpthread -lgraphics [B]-I/Library/Frameworks/GDK.framework/Headers[/B]

clean    :
    rm -f *.o test $(LIB)/libgraphics.a $(INCLUDE)/graphics.h



EDIT : Sigh veut toujours rien savoir >_<
 
il te réclame glib gtk dépend de son moteur qui est glib
généralement :D enfin toujours :D quand tu compiles une application gtk

tu as besoin de glib/pango/gtk+ cela va ensemble

mais si tu veux construire une application moderne sur les technologies Gnome
je te conseil guile

je trouve que tu te lance dans un truc un peu compliqué sous OSX
les gnomes technologies sous Darwin n'arrive pas encore au niveau de se que tu peux trouver
sous d'autres NIX*

si tu veux developper une app en c sous osx je te conseille d'utiliser carbon
si tu veux apprendre GTK je te conseil un Linux avec glade + ajunta ou + vim

la tu as choisi un exercice beaucoup trop difficile
et je pense que tu ne seras pas satisfaite par le but recherché


prends une feuille de papier et écrit dessus :
avec cette application "je veux apprendre "
1 foo , 2 bar ...

cela serait bien aussi que tu trouves "quelqu'un de physique"
pour qu'il te mache le travail


:zen:
 
Arf, je vois bien que je saute certaines etapes d'apprentissage mais le fait est que j'ai besoin de cette bibli de toute urgence, les partiels approchant a grands pas...:hein:

Enfin, merci quand meme pour l'aide je vais voir ce que je peux faire d'autre ^^
 
Arf, je vois bien que je saute certaines etapes d'apprentissage mais le fait est que j'ai besoin de cette bibli de toute urgence, les partiels approchant a grands pas...:hein:

Enfin, merci quand meme pour l'aide je vais voir ce que je peux faire d'autre ^^

installe un linux/Fedora core6 sur Disk USB extern
tu seras en environnement GTK avec tout le support

ou si tu as de quoi investir un peu un chipset AMD x86_64 cela serait bien pour toi
surtout si tu as un apprentissage qui aborde GTK sur le long terme

// je vois bien que je saute

oui :D enfin c'est plus que sauter :D