Estou tentando usar o comando make para construir. Eu estou seguindo isso . Estou compilando um código usando a linguagem GTK + 2 e 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
este é o código 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
existeRespostas:
Isso significa que você não tem os cabeçalhos gtk para criar coisas usando o GTK +. É realmente estranho que o erro não tenha aparecido na etapa ./configure. Para resolver isso basta fazer:
ou
libgtk-3-dev
.Isso deve resolver.
fonte
gtk-config --cflags --libs gtk+-2.0
Isso também é necessário para que você possa fazer coisas legais como:
Ele permite que você use
pkg-config
para economizar muito tempofonte
sudo apt-get install build-essential gnome-devel
, e o segundo comando pareceu funcionar a princípio, mas também gerou alguns problemas "Não existe esse arquivo ou diretório". A solução foi mais como:g++ `pkg-config --cflags gtk+-3.0` main.cpp -o base `pkg-config --libs gtk+-3.0`
O pacote debian / ubuntu equivalente a Gtk3 é
libgtk-3-dev
fonte
gcc `pkg-config --cflags gtk+-3.0` -o helloworld helloworld.c `pkg-config --libs gtk+-3.0`
Como você está usando ferramentas automáticas para gerar seus Makefiles, você precisa informar à automake como encontrar as dependências de cabeçalho e biblioteca do seu projeto e incorporá-las aos Makefiles finais. Esta não é minha área de especialização, mas tentarei apontá-lo na direção certa. A maioria dos itens a seguir é baseada no tutorial encontrado em Usando bibliotecas C / C ++ com Automake e Autoconf
Primeiro, você deve modificar o arquivo configure.ac de nível superior para adicionar a dependência do Gtk-2.0. Você pode usar a
PKG_CHECK_MODULES
macro para executarpkg-config
para encontrar as diretivas de inclusão e biblioteca correspondentes - é uma boa prática verificar sepkg-config
existe primeiro, portanto, devemos adicionar umPKG_PROG_PKG_CONFIG
teste também. As partes em negrito indicam o que foi adicionado, em relação aos arquivos no tutorial original do amhello de onde você começou.Em seguida, no seu,
src/Makefile.am
você pode recuperar os CFLAGS e LIBS usando oGTK
identificador usado naPKG_CHECK_MODULES
macro acimaQuando você executar novamente
make
, ele deverá gerar novamente seu src / Makefile com os-I
caminhos de inclusão apropriados ,-L
caminhos de bibliotecas e bibliotecas.fonte