Заметки / Простое графическое приложение
|
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-pie
gcc test.c -o test -lX11
Присваивание атрибута исполняемого файла. После компиляции он будет выставлен автоматически, так что при сборке программы в этой команде нет нужды:
chmod ugo+x test_exe
chmod ugo+x test
Итог:
|
|