| Заметки / Простое графическое приложение
|  |  | GCC, Linux | 
|---|
 |  |  
| Пример оконной программы для Ubuntu на основе библиотеки xlib: 
 
 
test.c
 
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h> 
#include <X11/Xlib.h> 
 extern int errno; 
   char msg [256]={"Hello, World!"};
    int sdf; 
    int width, height, tmp;
Display *d; 
 Window w;
     GC gc;
 XEvent e; 
void paint ()
{
 XGetGeometry (d, w, (Window *)&tmp, &tmp, &tmp, &width, &height, &tmp, &tmp); 
 XSetForeground (d, gc, 0);
 XFillRectangle (d, w, gc, 0, 0, width, height);
 XSetForeground (d, gc, 255*256*256+255*256+255);
 XDrawString (d, w, gc, 50, 50, msg, strlen (msg));
}
void main ()
{
 if ((d=XOpenDisplay (getenv ("DISPLAY")))==NULL)
 {
  printf ("Can't connect X server: %s\n", strerror (errno));
  exit (1); 
 } 
 sdf=DefaultScreen (d); 
 w=XCreateSimpleWindow (d, RootWindow (d, sdf),    
                        0, 0, 250, 250, 1, 
                        BlackPixel (d, sdf), WhitePixel (d, sdf));
 XSelectInput (d, w, ExposureMask
                   | KeyPressMask
                   | KeyReleaseMask);
 XMapWindow (d, w);                                 
  gc=XCreateGC (d, w, 0, 0);
 while (1)
 {
  XNextEvent (d, &e);
  if (e.type==Expose)
  {
   paint ();
  }
  if (e.type==KeyPress)
  {
      if (e.xkey.keycode==9)
   {
    break;
   }
  }
 }
 XFreeGC (d, gc);
 XDestroyWindow (d, w);
 XCloseDisplay (d);          
 exit (1);	
}
Для того, чтобы скомпилировать данную программу понадобятся следующие действия в консоли...
 
 
 
Обновление списка пакетов:
 
sudo apt-get update
 
Инсталляция компилятора GCC:
 
sudo apt-get install gcc
 
Установка библиотеки для работы с окнами:
 
sudo apt-get install libx11-dev
 
Сборка программы "test.c" в исполняемые файлы "test" и "test_exe", с оконным интерфейсом ("-lX11"). Параметр "-no-pie" позволяет создать исполняемый файл, кликом по которому можно запустить программу. Если скомпилировать программу без него, то приложение можно будет выполнить только из терминала:
 
gcc test.c -o test_exe -lX11 -no-piegcc test.c -o test -lX11
 
Присваивание атрибута исполняемого файла. После компиляции он будет выставлен автоматически, так что при сборке программы в этой команде нет нужды:
 
chmod ugo+x test_exechmod ugo+x test
 
Итог:
   
 
 
 |  |