[LINUX] Utilisation de X11 avec ubuntu18.04 (langage C)

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

Utilisation de X11 avec ubuntu18.04 (langage C)
Assembleur X86 sous Linux (lien avec C)
En forme de conteneur réalisé avec C # 1
Débogage C / C ++ avec gdb
Indépendant du type à l'aide de modèles C ++
Appelez votre propre bibliothèque de langage C avec Go en utilisant cgo
compilateur x86 réalisé avec python
Lors de l'utilisation d'optparse avec iPython
Essayez d'utiliser PythonTex avec Texpad.
Utilisation de Graphviz avec Jupyter Notebook
[S3] CRUD avec S3 utilisant Python [Python]
utilisation de golang slack édition C2
Messagerie avec AMQP à l'aide de kombu
Essayez Google Mock avec C
Utilisation de Quaternion avec Python ~ numpy-quaternion ~
Essayez d'utiliser matplotlib avec PyCharm
[Python] Utilisation d'OpenCV avec Python (basique)
Mettez Python 3.x dans Ubuntu
Créer un environnement python3 avec ubuntu 16.04
Utilisez «% tensorflow_version 2.x» lorsque vous utilisez TPU avec Tensorflow 2.1.0 dans Colaboratory
Utiliser une imprimante avec Debian 10
Formater la source du langage C avec pycparser
Essayez d'utiliser le folium avec anaconda
Utiliser OpenCV avec Python @Mac
Envoyer en utilisant Python avec Gmail
Créer un environnement pour Django x Apache x mod_wsgi avec Vagrant (Ubuntu 16.04)
Compléter python avec emacs en utilisant company-jedi
Moyenne harmonique par Python (en utilisant SciPy)
Résoudre ABC163 A ~ C avec Python
[Ubuntu] [Python] Suivi d'objets à l'aide de dlib
Appeler C depuis Python avec DragonFFI
Installez Python 2.7.9 et Python 3.4.x avec pip.
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
Créer Awaitable avec l'API Python / C
Japaneseize Matplotlib avec Alpine en utilisant Docker
Lancer plusieurs instances dans Postgresql 11.x
Utilisation de Rstan de Python avec PypeR
Cours ROS 108 Utilisation de la base de données (mongo) avec ROS
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
Météorologie x Ruby ~ Grattage de rubis avec Mechanize ~
Outil de révision de code C utilisant pycparser
[Python] Utilisation d'OpenCV avec Python (détection des bords)
Dessinez le japonais avec matplotlib sur Ubuntu
Ecriture du langage C avec Sympy (métaprogrammation)
Montez S3 sur Ubuntu avec goofys
Essayez d'utiliser LiDAR bon marché (Camsense X1)
Résoudre ABC168 A ~ C avec Python
Utilisation de sessions et de réflexions avec SQL Alchemy
Utilisation du japonais avec IPython @ Windows de Rodeo
Résolu AtCoder ABC 114 C-755 avec Python3
Résoudre ABC162 A ~ C avec Python