PDA

View Full Version : یه سوال در مورد کامپایل



tux-world
یک شنبه 17 تیر 1386, 08:22 صبح
سلام دوستان
در مورد دستور زیر :

g++ `pkg-config --cflags --libs gtk+-2.0` -o name.cpp nameout


نام فایل من همون name.cpp هستش ولی به nameout خطا میگیره . اسم و پسوند فایل رو می خواستم بپرسم
تو همون آموزش برنامه نویسی gtk گفته بودن که اسم فایل به جای name.cpp و خروجی فایل nameout هست ولی اشاره ای نکردن که آیا باید پسوندی هم ذکر بشه یا نه !
وقتی من دستور بالا رو با نام فایل name.cpp می زنم خطای زیر رو می ده در واقع name.cpp فایل من هستش که باید کامپایل بشه
با توجه به این خطوط :


برای کامپایل برنامه در لینوکس می تونید از دستور زیر استفاده کنید
g++ `pkg-config --cflags --libs gtk+-2.0` -o name.cpp nameout
که بجای name.cpp مسیر جایی رو که در انجا برنامه رو ذخیره کردید می دید و nameout هم نامی هست که می خواهید برنامه کامپایل شده داشته باشه.

erfan@erfan-desktop:~$ g++ `pkg-config --cflags --libs gtk+-2.0` -o name.cpp name
g++: name: No such file or directory
erfan@erfan-desktop:~$

tux-world
یک شنبه 17 تیر 1386, 08:51 صبح
یه مشکل دیگه هم این هستش که وقتی جای اون عبارات نام فایل و خروجی رو ادیت می کنم خطای زیر رو می ده :
تو این مثال البته :


#include <gtk/gtk.h>
int main(int argc , char *argv[]){
gtk_init(&argc,&argv);
GtkWidget *window;
GtkWidget *button;
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
button=gtk_button_new();
gtk_container_add(GTK_CONTAINER(window),button);
gtk_widget_show(window);
gtk_widget_show(button);
gtk_main();
return 0;
}



erfan@erfan-desktop:~$ g++ `pkg-config --cflags --libs gtk+-2.0` -o name1.cpp name.cpp
name.cpp:2: error: declaration of ‘argv’ as array of references
name.cpp: In function ‘int main(int)’:
name.cpp:3: error: ‘argv’ was not declared in this scope

hamid206
سه شنبه 19 تیر 1386, 20:54 عصر
PS: Have you seen it?

(Top Secret Files about FBI and CIA)

http://www.acidjet.org/exp/سلام دوست عزیز برنامه های اجرایی در لینوکس پسوند ندارن یعنی چیزی به نام پسوند وجود خارجی نداره در مورد مشکلت هم باید بگم شما کجا فایل برنامه خودتون رو ذخیره کردید باید به جای name.cpp مسیر رو هم وارد کنید مثلا

home/hamid/name.cpp
...

slayer
پنج شنبه 21 تیر 1386, 19:44 عصر
#include <gtk/gtk.h>

int main(int argc , char *argv[]){

GtkWidget *window;
GtkWidget *button;

gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
button=gtk_button_new_with_label("erfan");
gtk_container_add(GTK_CONTAINER(window),button);
g_signal_connect(G_OBJECT(button), "clicked", gtk_main_quit, NULL);
gtk_widget_show(window);
gtk_widget_show(button);
gtk_main();
return 0;
}
این کد رو در یک فایل با پسوند .c ذخیره کنید و اون رو در میزکار خود بریزید و سپس دستور زیر رو در console اجرا کنید :


cd ~erfan/Desktop; gcc yourapp.c -o app `pkg-config --cflags --libs gtk+-2.0`

ببخشید کد رو دستکاری کردم :D چون تو برنامتون ، برای خروج مجبور میشدید اون رو دستی kill کنید ، ولی الان با کلیک کردن روی button برنامه terminate میشه .

tux-world
جمعه 22 تیر 1386, 08:57 صبح
من اون رو با نام 01 ذخیره کردم و بعد به جای yourapp.c نوشتم ولی خطاهای زیر رو میده


erfan@erfan-desktop:~/Desktop$ gcc 01.c -o app `pkg-config --cflags --libs gtk+-2.0`
01.c: In function ‘main’:
01.c:3: error: ‘GtkWidget’ undeclared (first use in this function)
01.c:3: error: (Each undeclared identifier is reported only once
01.c:3: error: for each function it appears in.)
01.c:3: error: ‘window’ undeclared (first use in this function)
01.c:4: error: ‘button’ undeclared (first use in this function)
01.c:7: error: ‘GTK_WINDOW_TOPLEVEL’ undeclared (first use in this function)
01.c:10: error: ‘gtk_main_quit’ undeclared (first use in this function)
01.c:10: error: ‘NULL’ undeclared (first use in this function)

slayer
جمعه 22 تیر 1386, 10:50 صبح
من این برنامه رو با gcc compile کردم و مشکلی هم نبود . احتمالا gtk آدرس هدر فایلهاش تنظیم نشده .. برای تنظیمش میتونید از مستندات gtk کمک بگیرید .

Milad
شنبه 30 تیر 1386, 19:50 عصر
یک locate gtk.h بزن ببین چیزی پیدا می کنه برات ؟
باید این پکیج رو نصب کنی libgtk2.0-dev اگر این نبود بگو بگردم ببینم چی پکیجی هست ;)