"মারাত্মক ত্রুটি: gtk / gtk.h: মেক ব্যবহার করে এমন কোনও ফাইল বা ডিরেক্টরি নেই"


18

আমি নির্মাণের জন্য মেক কমান্ডটি ব্যবহার করার চেষ্টা করছি। আমি এই অনুসরণ করছি । আমি জিটিকে + ২ এবং সি ভাষা ব্যবহার করে একটি কোড সংকলন করছি

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

এটি মূল কোড কোড 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);
}

এমনকি ফাইলটি যেখানে আছে ঠিক তেমন পরীক্ষা করেছে কিনা? /gtk/gtk.h
Xylo

@ জাইলো কীভাবে চেক করবেন জানেন না। দয়া করে আমাকে বলুন আমি কীভাবে চেক করতে পারি
ওসামা

ডিরেক্টরি /usr/include/gtk-2.0উপস্থিত কিনা তা পরীক্ষা করুন
জাইলো

1
@ বড়াইম আমি main.c
ওসামা

উত্তর:


23

এর অর্থ হ'ল জিটিকে + ব্যবহার করে জিনিসপত্র তৈরি করতে আপনার কাছে জিটিকে শিরোনাম নেই। সত্যিই অদ্ভুত যে ./configure পদক্ষেপে ত্রুটিটি প্রদর্শিত হয়নি। এটি সমাধান করার জন্য কেবল করুন:

sudo apt-get install libgtk2.0-dev

বা libgtk-3-dev

যা করা উচিৎ.


আমি # অন্তর্ভুক্ত <gtk / gtk.h> লাইব্রেরী
ওসামা

সমস্যাটি যখন আমি কমান্ড
মেকটি

আপনি কি প্রাসঙ্গিক কোড যুক্ত করতে পারবেন কিনা তা পুনরুত্পাদন করা সম্ভব কিনা তা দেখতে?
ব্রায়াম

আমার কমপিলিটিগুলি পুরোপুরি যখন আমি এটি কমান্ডটি জিসিসি মেইন.সি.টি ব্যবহার করে সংকলন করিgtk-config --cflags --libs gtk+-2.0
ওসামা

এই লিঙ্কটিতে যান এবং আপনি বুঝতে পারবেন আমি কি করতে চাইছি জিজ্ঞাসাবাবু
ওসামা

9
sudo apt-get install build-essential gnome-devel

এটিও দরকার যাতে আপনি শীতল জিনিসগুলি করতে পারেন:

g++ main.cpp -o base `pkg-config --cflags --libs gtk+-3.0`

এটি আপনাকে pkg-configপুরো সময় সাশ্রয় করতে ব্যবহার করতে দেয়


কমপক্ষে আমার ক্ষেত্রে আমাকে এক্সিকিউট করতে হবে না sudo apt-get install build-essential gnome-develএবং দ্বিতীয় কমান্ডটি প্রথমে কাজ করে বলে মনে হয়েছিল, তবে "এ জাতীয় কোনও ফাইল বা ডিরেক্টরি" সমস্যাও ত্রুটিযুক্ত করে তুলেছে। সমাধানটির মতো আরও ছিল:g++ `pkg-config --cflags gtk+-3.0` main.cpp -o base `pkg-config --libs gtk+-3.0`
রুই পাইমেটেনেল

3

Gtk3 সমতুল্য ডেবিয়ান / উবুন্টু প্যাকেজটি libgtk-3-dev


ঠিক ডেবিয়ান বাস্টারে কাজ করে। এই লাইব্রেরি ইনস্টল করার পরে বেলো কমান্ড ./heelorld নির্বাহযোগ্য থেকে সহজ উত্স কোডটি সংকলন করতে পারে। gcc `pkg-config --cflags gtk+-3.0` -o helloworld helloworld.c `pkg-config --libs gtk+-3.0`
ইসমাeল

2

যেহেতু আপনি আপনার মেকফিলগুলি তৈরি করতে অটটুলগুলি ব্যবহার করছেন তাই আপনার প্রকল্পের শিরোনাম এবং গ্রন্থাগার নির্ভরতা কীভাবে সন্ধান করতে হবে এবং সেগুলি চূড়ান্ত মেকফিলগুলিতে অন্তর্ভুক্ত করার জন্য আপনাকে স্বয়ংক্রিয় তৈরি করতে হবে। এটি আমার দক্ষতার ক্ষেত্র নয় তবে আমি আপনাকে সঠিক দিকে নির্দেশ করার চেষ্টা করব। নীচের বেশিরভাগটি অটোমেক এবং অটোকনফের সাথে সি / সি ++ লাইব্রেরি ব্যবহার করে পাওয়া টিউটোরিয়াল ভিত্তিক

Gtk-2.0 নির্ভরতা যুক্ত করতে প্রথমে আপনাকে অবশ্যই শীর্ষ স্তরের কনফিগার.এ্যাক ফাইলটি পরিবর্তন করতে হবে। আপনি সম্পর্কিত PKG_CHECK_MODULESম্যাক্রোটি চালানোর pkg-configজন্য চালিয়ে যেতে ব্যবহার করতে পারেন সম্পর্কিত অন্তর্ভুক্ত এবং লাইব্রেরি নির্দেশাবলী - এটি যে pkg-configপ্রথমে বিদ্যমান তা পরীক্ষা করা ভাল অনুশীলন , সুতরাং আমাদেরও একটি PKG_PROG_PKG_CONFIGপরীক্ষা যুক্ত করা উচিত । সাহসী অংশগুলি সূচনা করেছে যে আপনি যে ਅਮেহেলো টিউটোরিয়াল থেকে শুরু করেছিলেন তার সাথে সম্পর্কিত ফাইলগুলি কী যুক্ত করেছে।

AC_INIT([amhello], [1.0], [bug-automake@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
 Makefile
 src/Makefile
])
dnl Test for pkg-config
PKG_PROG_PKG_CONFIG([0.22])
dnl Test for gtk+
PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.24.10])
AC_OUTPUT

তারপরে আপনার উপরের ম্যাক্রোতে আপনি যে শনাক্তকারী src/Makefile.amব্যবহার করেছেন তা ব্যবহার করে GTKআপনি সিএফএলএগএস এবং এলআইবিএস পুনরুদ্ধার করতে পারবেনPKG_CHECK_MODULES

bin_PROGRAMS = hello
hello_SOURCES = main.c
AM_CPPFLAGS = ${GTK_CFLAGS}
hello_LDADD = ${GTK_LIBS}

আপনি যখন আবার চালনা করবেন make, এটিতে আপনার এসআরসি / মেকফিলটিকে পুনরায় উত্পন্ন করা উচিত যথাযথ -Iঅন্তর্ভুক্ত পাথ, -Lগ্রন্থাগার পাথ এবং লাইব্রেরি।


তুমি একজন প্রতিভাবান. আমি কেবল আপনার উত্তরের জন্য অপেক্ষা করছিলাম কারণ আমি জানতাম আপনি উপযুক্ত উত্তর দিতে পারেন। ধন্যবাদ :)
ওসামা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.