# Native Code > برنامه نویسی با C > برنامه نویسی GTK، GTK+‎ و wxWidget >  یه سوال در مورد کامپایل

## tux-world

سلام دوستان 
در مورد دستور زیر :
 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

یه مشکل دیگه هم این هستش که وقتی جای اون عبارات نام فایل و خروجی رو ادیت می کنم خطای زیر رو می ده :
تو این مثال البته :
 #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

PS: Have you seen it? 

(Top Secret Files about FBI and CIA)

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

home/hamid/name.cpp
...

----------


## slayer

#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

من اون رو با نام 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

من این برنامه رو با gcc compile کردم و مشکلی هم نبود . احتمالا gtk آدرس هدر فایلهاش تنظیم نشده .. برای تنظیمش میتونید از مستندات gtk کمک بگیرید .

----------


## Milad

یک locate gtk.h بزن ببین چیزی پیدا می کنه برات ؟
باید این پکیج رو نصب کنی libgtk2.0-dev اگر این نبود بگو بگردم ببینم چی پکیجی هست ;)

----------

