Saya mencoba menggunakan perintah make untuk membangun. Saya mengikuti ini . Saya mengkompilasi kode menggunakan bahasa GTK + 2 dan 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
ini adalah kode 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
adaJawaban:
Ini artinya Anda tidak memiliki header gtk untuk membuat barang menggunakan GTK +. Sangat aneh bahwa kesalahan tidak muncul pada langkah ./configure. Untuk mengatasi ini lakukan saja:
atau
libgtk-3-dev
.Itu harus dilakukan.
sumber
gtk-config --cflags --libs gtk+-2.0
Itu juga diperlukan agar Anda dapat melakukan hal-hal keren seperti:
Ini memungkinkan Anda menggunakan
pkg-config
untuk menghemat banyak waktusumber
sudo apt-get install build-essential gnome-devel
, dan perintah kedua tampaknya bekerja pada awalnya, tetapi menyebabkan masalah "Tidak ada file atau direktori" seperti itu. Solusi lebih seperti:g++ `pkg-config --cflags gtk+-3.0` main.cpp -o base `pkg-config --libs gtk+-3.0`
Paket setara debt / ubuntu Gtk3 adalah
libgtk-3-dev
sumber
gcc `pkg-config --cflags gtk+-3.0` -o helloworld helloworld.c `pkg-config --libs gtk+-3.0`
Karena Anda menggunakan autotool untuk menghasilkan Makefiles Anda, Anda perlu memberi tahu automake cara menemukan dependensi header dan pustaka dari proyek Anda dan memasukkannya ke dalam Makefiles akhir. Ini bukan bidang keahlian saya, tetapi saya akan mencoba mengarahkan Anda ke arah yang benar. Sebagian besar dari berikut ini didasarkan pada tutorial yang ditemukan di Menggunakan perpustakaan C / C ++ dengan Automake dan Autoconf
Pertama, Anda harus memodifikasi file configure.ac tingkat atas untuk menambahkan ketergantungan Gtk-2.0. Anda dapat menggunakan
PKG_CHECK_MODULES
makro untuk menjalankanpkg-config
untuk menemukan arahan yang menyertakan dan pustaka yang sesuai - praktik yang baik untuk memeriksa yangpkg-config
ada terlebih dahulu, jadi kita harus menambahkanPKG_PROG_PKG_CONFIG
tes juga. Bagian tebal menunjukkan apa yang ditambahkan, relatif terhadap file dalam tutorial asli yang Anda mulai.Kemudian di Anda,
src/Makefile.am
Anda dapat mengambil CFLAGS dan LIBS menggunakanGTK
pengidentifikasi yang Anda gunakan diPKG_CHECK_MODULES
makro di atasKetika Anda menjalankan kembali
make
, itu harus menghasilkan kembali src / Makefile Anda dengan-I
jalur sertakan yang sesuai ,-L
jalur perpustakaan dan perpustakaan.sumber