Installation de la bibliothèque X11
sudo apt update
(sudo apt upgrade)
sudo apt install libx11-dev
#include <X11/Xlib.h> //Comprend requis pour Xlib
#include <X11/Xutil.h>
Vérifiez l'emplacement des bibliothèques requises pour Xlib. Vérifiez l'emplacement du fichier d'en-tête et de la bibliothèque partagée.
sudo find /usr -type f -name Xlib.h
sudo find /usr -type f -name libX11.so
Commandes avec d'autres options de compilation
gcc -o xlib_test xlib_test.c -O2 -I/usr/include -L/usr/lib/x86_64-linux-gnu -lX11 -lm
Un programme de test qui n'affiche qu'une fenêtre noire http://cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/XLIB/xlib2.html J'ai essayé le programme sur le site ci-dessus tel quel.
// reference URL
// http://cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/XLIB/xlib2.html
#include <X11/Xlib.h> //Comprend requis pour Xlib
#include <X11/Xutil.h>
#include <stdio.h>
int main( void )
{
Display* dis; //Display pointer
Window win; //Window ID
XSetWindowAttributes att; //Variables d'attribut de fenêtre
XEvent ev; //Variables de capture d'événements
dis = XOpenDisplay( NULL ); //Connexion avec Xserver
win = XCreateSimpleWindow( dis, RootWindow(dis,0), 100, 100,
256, 256, 3, WhitePixel(dis,0), BlackPixel(dis,0) ); //Génération de fenêtres
att.backing_store = WhenMapped; //Configurer pour enregistrer l'image
XChangeWindowAttributes( dis, win, CWBackingStore, &att );
XMapWindow( dis, win ); //Étalage
XFlush( dis ); //Envoi forcé de la demande
XSelectInput( dis, win, ExposureMask );
do{ //Boucle en attente de l'ouverture de la fenêtre
XNextEvent( dis, &ev);
}while( ev.type != Expose ); //Répétez ici jusqu'à ce que l'événement Expose arrive
//Si vous venez jusque-là, vous devriez voir une fenêtre noire.
getchar(); //Attendez que la touche retour soit enfoncée.
XDestroyWindow( dis, win ); //Effacer la fenêtre
XCloseDisplay( dis ); //Déconnexion de Xserver
return 0;
}
Facilitez la compilation en créant un Makefile
.
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)
$ @
Est le fichier cible.
«$ ^» est le fichier qui spécifie le matériau.
Recommended Posts