J'essaie d'utiliser la commande make pour construire. Je suis ceci . Je compile un code en utilisant le langage GTK + 2 et C
hp@ubuntu:~/amhello$ make
make all-recursive
make[1]: Entering directory `/home/hp/amhello'
Making all in src
make[2]: Entering directory `/home/hp/amhello/src'
gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
main.c:3:20: fatal error: gtk/gtk.h: No such file or directory
compilation terminated.
make[2]: *** [main.o] Error 1
make[2]: Leaving directory `/home/hp/amhello/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/hp/amhello'
make: *** [all] Error 2
c'est le code main.c
#include<config.h>
#include<stdio.h>
#include<gtk/gtk.h>
void static call(GtkWidget *widget,gpointer data) {
g_print("%s \n",(gchar*) data);
}
int main(int agrc, char *agrv[]) {
gtk_init(&agrc,&agrv);
GtkWidget *window,*button;
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(window,"delete-event",G_CALLBACK(gtk_main_quit),NULL);
gtk_window_set_title(GTK_WINDOW(window),"one button");
button=gtk_button_new_with_label("hello world");
g_signal_connect(button,"clicked",G_CALLBACK(call),(gpointer) "hello world");
gtk_container_set_border_width(GTK_CONTAINER(window),10);
gtk_container_add(GTK_CONTAINER(window),button);
gtk_widget_show_all(window);
gtk_main();
return (0);
}
/usr/include/gtk-2.0
existeRéponses:
Cela signifie que vous n'avez pas les en-têtes gtk pour construire des trucs en utilisant GTK +. C'est vraiment bizarre que l'erreur ne soit pas apparue à l'étape ./configure. Pour résoudre cela, faites simplement:
ou
libgtk-3-dev
.Ça devrait le faire.
la source
gtk-config --cflags --libs gtk+-2.0
Cela est également nécessaire pour que vous puissiez faire des choses intéressantes comme:
Il vous permet d'utiliser
pkg-config
pour gagner beaucoup de tempsla source
sudo apt-get install build-essential gnome-devel
, et la deuxième commande a semblé fonctionner au début, mais a également conduit à des problèmes "Aucun fichier ou répertoire". La solution était plus comme:g++ `pkg-config --cflags gtk+-3.0` main.cpp -o base `pkg-config --libs gtk+-3.0`
Le paquet debian / ubuntu équivalent à gtk3 est
libgtk-3-dev
la source
gcc `pkg-config --cflags gtk+-3.0` -o helloworld helloworld.c `pkg-config --libs gtk+-3.0`
Puisque vous utilisez des outils automatiques pour générer vos Makefiles, vous devez dire à automake comment trouver les dépendances d'en-tête et de bibliothèque de votre projet et les incorporer dans les Makefiles finaux. Ce n'est pas mon domaine d'expertise mais je vais essayer de vous orienter dans la bonne direction. La plupart des éléments suivants sont basés sur le didacticiel trouvé dans Utilisation des bibliothèques C / C ++ avec Automake et Autoconf
Tout d'abord, vous devez modifier le fichier configure.ac de niveau supérieur pour ajouter la dépendance Gtk-2.0. Vous pouvez utiliser la
PKG_CHECK_MODULES
macro pour exécuterpkg-config
pour trouver les directives d'inclusion et de bibliothèque correspondantes - il est recommandé de vérifier qu'ellespkg-config
existent d'abord, nous devons donc également ajouter unPKG_PROG_PKG_CONFIG
test. Les parties en gras indiquent ce qui a été ajouté, par rapport aux fichiers du didacticiel amhello d'origine à partir duquel vous avez commencé.Ensuite, dans votre,
src/Makefile.am
vous pouvez récupérer les CFLAGS et LIBS en utilisant l'GTK
identifiant que vous avez utilisé dans laPKG_CHECK_MODULES
macro ci-dessusLorsque vous réexécutez
make
, il doit régénérer votre src / Makefile avec les-I
chemins d'inclusion,-L
les chemins de bibliothèque et les bibliothèques appropriés .la source