OVH Cloud OVH Cloud

problèmes .h wxGTK sous Mandrake 10 (newbie)

5 réponses
Avatar
ctobini
Bonjour,

J'ai un problème de compilation avec wxGTK sous Mandrake 10. Après avoir
buté avec les RPM j'ai compilé les sources et j'ai une tonne d'erreurs
concernant les headers.

La compilation a installé les headers dans /usr/local/include/wx/ et
/usr/lib/wx/

Mes questions sont les suivantes :

- comment savoir quels headers de /usr/lib ou /usr/local/include sont
utilisés pour la compilation (ou les 2) ?

- peut-on indiquer à gcc l'emplacement des headers supplémentaires à
utiliser ?

- peut on indiquer dans la compil de wxGTK le répertoire dans lequel
installer les .h ?

- peut-on ajouter de manière plus général un chemin pour les .h à Linux ?

Je vous remercie.

C. Tobini

5 réponses

Avatar
Christophe de Vienne
ctobini wrote:
Bonjour,



<HS>

J'ai un problème de compilation avec wxGTK sous Mandrake 10. Après avoir
buté avec les RPM j'ai compilé les sources et j'ai une tonne d'erreurs
concernant les headers.


Il y a beaucoup d'information dans wxWiki. Notament, concernant la
compilation :
http://wiki.wxwidgets.org/wiki.pl?Build_System_Management
http://wiki.wxwidgets.org/wiki.pl?Compiling_WxWidgets


La compilation a installé les headers dans /usr/local/include/wx/ et
/usr/lib/wx/

Mes questions sont les suivantes :

- comment savoir quels headers de /usr/lib ou /usr/local/include sont
utilisés pour la compilation (ou les 2) ?

- peut-on indiquer à gcc l'emplacement des headers supplémentaires à
utiliser ?


-I/usr/lib/wx/include/gtk-2.4

Mais le mieux est d'utiliser wx-config :

Pour compiler : g++ -c `wx-config --cflags` toto.cpp -o toto.o
Pour le link : g++ *.o `wx-config --libs`


- peut on indiquer dans la compil de wxGTK le répertoire dans lequel
installer les .h ?


./configure --prefix=xxxx
cf les 2 liens au dessus

- peut-on ajouter de manière plus général un chemin pour les .h à Linux ?


Par défaut il y a /usr/include et /usr/local/include. Pour les autres
c'est à toi de le préciser sur la ligne de commande

</HS>


Je vous remercie.


De rien, mais c'est qd même HS ici.

A+

Christophe

Avatar
ctobini
Bonjour et merci pur la réponse

Christophe de Vienne wrote:

Pour compiler : g++ -c `wx-config --cflags` toto.cpp -o toto.o
Pour le link : g++ *.o `wx-config --libs`


La compilation se déroule bien ici.

De rien, mais c'est qd même HS ici.


Désolé, c'est effectivement plus un sujet de configuration... :-)

Je vais quand même te poser une autre question histoire de ne pas
relancer un topic ailleurs.

Lorsque je lance l'exécutable, j'ai une erreur : can't load shared
libraries. libwxgtk-2.5.2-html.so can't find shared object.

J'ai compilés wxGTK avec comme argument de configuration ./configure
--with-gtk.

Tu as une idée d'où peut provenir une telle erreur ?

Merci beaucoup.

C. Tobini

Avatar
ctobini
Bon je clos le topic et te remercie encore.

L'erreur venait du fait que je n'avais pas rentré /usr/local/lib dans
/etc/ld.so.conf (en root).

Au revoir.

C. Tobini
Avatar
Cyrille Karmann
ctobini disait:

De rien, mais c'est qd même HS ici.


Désolé, c'est effectivement plus un sujet de configuration... :-)


Oui "configuration", comme dans "fr.comp.os.linux.configuration".
C'est pas pour t'embéter, hein, tu auras simplement plus de chances de
trouver des réponses là-bas.

--
Cyrille


Avatar
kanze
ctobini wrote in message
news:<cg5r34$fen$...

J'ai un problème de compilation avec wxGTK sous Mandrake 10. Après
avoir buté avec les RPM j'ai compilé les sources et j'ai une tonne
d'erreurs concernant les headers.

La compilation a installé les headers dans /usr/local/include/wx/ et
/usr/lib/wx/

Mes questions sont les suivantes :

- comment savoir quels headers de /usr/lib ou /usr/local/include sont
utilisés pour la compilation (ou les 2) ?


La plus simple, en général, c'est de démander la sortie du préprocesseur
(-E avec g++ -- la plus souvent, d'ailleurs, c'est -E ou /E) et de le
filtrer au moyen d'un script de shell. Quelque chose du genre :

g++ -E fill.cc |
sed -n 's/^[ ]*#[ ]*[1-9][0-9]*[ ]*"([^"]*)".*/1/p' |
sort -u

marche avec la plupart des compilateurs que j'ai essayé.

Souvent, aussi, il existe la possibilité de dire au compilateur de
générer des dépendences de make, c'est l'option -M avec g++. Or, les
dépendences de make, c'est aussi une liste des fichiers qui sont inclus.
Mais cette option est loin d'être universelle -- c'est -xM1 avec Sun CC,
et ne n'ai pas réussi à en trouver une pour VC++. Tandis que le coup
avec le préprocesseur, je n'ai pas encore trouvé un compilateur pour
lequel il ne marche pas, soit dans la façon ci-dessus, soit en ajoutant
un 'line' entre le '#' et le nombre dans le sed.

- peut-on indiquer à gcc l'emplacement des headers supplémentaires à
utiliser ?


Certainement. Au moyen de l'option -I. Comme avec tout compilateur Unix.
Ou Windows, bien que /I soit plus idiomatique là.

- peut on indiquer dans la compil de wxGTK le répertoire dans lequel
installer les .h ?


Ça, il faut voir la procédure d'installation. La plupart du temps (mais
je ne connais pas wxWindows), il y aura une option pour spécifier le
chemin d'installation (avec /usr/local comme défaut). À défaut de tout
autre, et à utiliser avec beaucoup de précaution :

mv /usr/local /usr/local.sav
ln -s ouTuVeux /usr/local
# install ce que tu veux
rm /usr/local
mv /usr/local.sav /usr/local

Mais quand je dis, beaucoup de précaution, c'est beaucoup de précaution.

- peut-on ajouter de manière plus général un chemin pour les .h à
Linux ?


Ça, il faudrait démander dans un groupe spécialisé g++. C'est sûrement
possible -- dans le pire des cas, tu as les sources g++, tu les
modifies, et tu récompiles. Mais j'imagine que c'est beaucoup plus
simple ; il n'y a peut-être même pas besoin de récompiler.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34