Installieren der X11-Bibliothek
sudo apt update
(sudo apt upgrade)
sudo apt install libx11-dev
#include <X11/Xlib.h> //Inklusive für Xlib erforderlich
#include <X11/Xutil.h>
Überprüfen Sie die Platzierung der erforderlichen Bibliotheken für Xlib. Überprüfen Sie die Platzierung der Header-Datei und der gemeinsam genutzten Bibliothek.
sudo find /usr -type f -name Xlib.h
sudo find /usr -type f -name libX11.so
Befehle mit anderen Kompilierungsoptionen
gcc -o xlib_test xlib_test.c -O2 -I/usr/include -L/usr/lib/x86_64-linux-gnu -lX11 -lm
Ein Testprogramm, das nur ein schwarzes Fenster anzeigt http://cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/XLIB/xlib2.html Ich habe das Programm auf der obigen Seite so ausprobiert, wie es ist.
// reference URL
// http://cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/XLIB/xlib2.html
#include <X11/Xlib.h> //Inklusive für Xlib erforderlich
#include <X11/Xutil.h>
#include <stdio.h>
int main( void )
{
Display* dis; //Display pointer
Window win; //Window ID
XSetWindowAttributes att; //Fensterattributvariablen
XEvent ev; //Ereigniserfassungsvariablen
dis = XOpenDisplay( NULL ); //Verbindung mit Xserver
win = XCreateSimpleWindow( dis, RootWindow(dis,0), 100, 100,
256, 256, 3, WhitePixel(dis,0), BlackPixel(dis,0) ); //Fenstergenerierung
att.backing_store = WhenMapped; //Zum Speichern des Bildes einstellen
XChangeWindowAttributes( dis, win, CWBackingStore, &att );
XMapWindow( dis, win ); //Fensteranzeige
XFlush( dis ); //Erzwungenes Senden einer Anfrage
XSelectInput( dis, win, ExposureMask );
do{ //Schleife, die darauf wartet, dass sich das Fenster öffnet
XNextEvent( dis, &ev);
}while( ev.type != Expose ); //Wiederholen Sie diesen Vorgang, bis das Expose-Ereignis eintrifft
//Wenn Sie so weit kommen, sollten Sie ein schwarzes Fenster sehen.
getchar(); //Warten Sie, bis die Eingabetaste gedrückt wird.
XDestroyWindow( dis, win ); //Löschen Sie das Fenster
XCloseDisplay( dis ); //Trennung von Xserver
return 0;
}
Erleichtern Sie die Kompilierung, indem Sie ein Makefile erstellen.
CC = gcc
CFLAGS = -O2 -I/usr/include
LIBS = -L/usr/lib/x86_64-linux-gnu -lX11 -lm
TARGET = xlib_test
SRC = xlib_test.c
$(TARGET): $(SRC)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
clean:
rm $(TARGET)
$ @ Ist die Zieldatei.
$ ^
ist die Datei, die das Material angibt.
Recommended Posts