Ich versuche, mit dem Befehl make zu bauen. Ich verfolge das . Ich kompiliere einen Code mit GTK + 2 und C-Sprache
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
Dies ist der main.c-Code
#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
vorhanden istAntworten:
Dies bedeutet, dass Sie nicht über die gtk-Header verfügen, um mit GTK + Inhalte zu erstellen. Ist echt komisch, dass der Fehler bei ./configure step nicht aufgetaucht ist. Um dies zu lösen, mache einfach:
oder
libgtk-3-dev
.Das sollte es tun.
quelle
gtk-config --cflags --libs gtk+-2.0
Das wird auch benötigt, damit du coole Sachen machen kannst wie:
Sie können damit
pkg-config
viel Zeit sparenquelle
sudo apt-get install build-essential gnome-devel
, und der zweite Befehl schien zunächst zu funktionieren, führte aber auch zu glib "No such file or directory" -Problemen. Lösung war eher wie:g++ `pkg-config --cflags gtk+-3.0` main.cpp -o base `pkg-config --libs gtk+-3.0`
Da Sie Autotools zum Generieren Ihrer Makefiles verwenden, müssen Sie automake mitteilen, wie die Header- und Bibliotheksabhängigkeiten Ihres Projekts ermittelt und in die endgültigen Makefiles integriert werden sollen. Dies ist nicht mein Fachgebiet, aber ich werde versuchen, Sie in die richtige Richtung zu weisen. Die meisten der folgenden Informationen basieren auf dem Lernprogramm unter Verwenden von C / C ++ - Bibliotheken mit Automake und Autoconf
Zunächst müssen Sie die Datei configure.ac auf oberster Ebene ändern, um die Gtk-2.0-Abhängigkeit hinzuzufügen. Sie können das
PKG_CHECK_MODULES
Makro zum Ausführen verwendenpkg-config
, um die entsprechenden Include- und Library-Anweisungen zu finden. Es empfiehlt sich,pkg-config
zunächst zu überprüfen, ob sie vorhanden sind. Daher sollten wir auch einenPKG_PROG_PKG_CONFIG
Test hinzufügen . Die fett gedruckten Teile zeigen an, was hinzugefügt wurde, relativ zu den Dateien im ursprünglichen amhello-Tutorial, mit dem Sie begonnen haben.Dann können
src/Makefile.am
Sie in Ihrem die CFLAGS und LIBS mit demGTK
Bezeichner abrufen, den Sie imPKG_CHECK_MODULES
obigen Makro verwendet habenWenn Sie es erneut ausführen
make
, sollte es Ihr src / Makefile mit den entsprechenden-I
Include-Pfaden,-L
Bibliothekspfaden und Bibliotheken neu generieren .quelle
Das Gtk3-äquivalente Debian / Ubuntu-Paket ist
libgtk-3-dev
quelle