Mazette ! Je n'arrive pas à compiler après plusieurs jours, semaines, etc. Un programme avec automake, autoconf, etc. avec Gtk+-3.0 alors qu'avant tout fonctionnait sur des roulettes.
Mais que diable faut-il faire ?
Je me suis rabattu à compiler un bout de code miteux en gtk :
#include <stdlib.h>
#include <gtk/gtk.h>
int main(int argc, char **argv)
{
/* Initialisation de GTK+ */
gtk_init(&argc, &argv);
return EXIT_SUCCESS;
}
que j'ai compilé avec :
gcc `pkg-config --cflags --libs gtk+-3.0` hello.c -o hello
sur un AMD64/Ubuntu 11.10, libgtk-3-dev, glib 2.30 sont pourtant bien installés..
Mais rien n'y fait :
/tmp/ccIwRsYi.o: In function `main':
hello.c:(.text+0x1e): undefined reference to `gtk_init'
collect2: ld a retourné 1 code d'état d'exécution
J'en perds mon latin*x !
Quelqu'un aurait une piste ?
Merci
# Déja c'est une erreur au linkage
Posté par TheBreton . Évalué à 1.
Donc moi je regarderais plutot l'option de link
pourrais tu essayer en écrianvat la ligne comme ca ?
gcc hello.c -o hello $(pkg-config --cflags gtk+-3.0) $(pkg-config --libs gtk+-3.0)
[^] # Re: Déja c'est une erreur au linkage
Posté par Florian Hatat . Évalué à 2.
J'ai lu certains messages qui évoquent une importance sur l'ordre des paramètres à gcc, et mettent l'appel à pkg-config à la fin de la ligne, comme l'a fait TheBreton :
Je serais curieux de savoir si ça résoud ton problème. Cela viendrait à priori d'un changement chez Ubuntu (prévu dans Natty mais réalisé dans Oneiric), qui se contourne en mettant les -libs à la fin : https://wiki.ubuntu.com/NattyNarwhal/ToolchainTransition
Je n'ai pas compris les détails du document, donc si j'ai vu juste je suis preneur d'une explication.
[^] # Re: Déja c'est une erreur au linkage
Posté par Zylabon . Évalué à 2.
Oui en effet, si A contient des références à des symboles de B, "cc -lB -lA" ne fonctionnera pas, mais "cc -lA -lB" oui
Comme si gcc regardait ses arguments de droite à gauche et collectait les définitions, et vérifie à chaque référence qu'il puisse bien y associer une définition. (je suppose que c'est vraiment ce qu'il fait)
Please do not feed the trolls
[^] # Re: Déja c'est une erreur au linkage
Posté par gaaaaaAab . Évalué à 3.
attention quand même, l'ordre des libs dans les paramètres est important seulement pour les librairies statiques (.a), pas pour les librairies dynamiques.
[^] # Re: Déja c'est une erreur au linkage
Posté par nunuxWoolf . Évalué à 2.
En effet, ça fonctionne.. Mais je suis dubitatif car je n'ai pas rencontré ce genre de soucis auparavant.
Ce qui va m'amener à me pencher sur mon problème initial avec les Autotools.
Bravo les mecs, vous êtes balèzes..
Merci
# manque le .so
Posté par Krunch (site web personnel) . Évalué à 3.
Il dit quoi exactement "pkg-config --libs gtk+-3.0" ?
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: manque le .so
Posté par nunuxWoolf . Évalué à 1.
Pour infos :
-pthread -lgtk-3 -lgdk-3 -latk-1.0 -lcairo-gobject -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0
[^] # Re: manque le .so
Posté par dyno partouzeur de drouate . Évalué à 3.
Questions suivantes:
- Il ressemble à quoi le libgtk-3.so qui doit traîner dans /usr/lib ?
- Que retourne la comamnde ldconfig ?
[^] # Re: manque le .so
Posté par nunuxWoolf . Évalué à 0.
Tu aurais une idée pour AUTOTOOLS ?
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.