[LINUX] Verwenden von X11 mit ubuntu18.04 (C-Sprache)

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

Verwenden von X11 mit ubuntu18.04 (C-Sprache)
X86 Assembler unter Linux (Verknüpfung mit C)
Behälterartig hergestellt mit C # 1
C / C ++ - Debugging mit gdb
Typunabhängig mit C ++ - Vorlagen
Rufen Sie mit Go mit cgo Ihre eigene C-Sprachbibliothek auf
x86-Compiler selbst erstellt mit Python
Bei Verwendung von optparse mit iPython
Versuchen Sie, PythonTex mit Texpad zu verwenden.
Verwenden von Graphviz mit Jupyter Notebook
[S3] CRUD mit S3 unter Verwendung von Python [Python]
mit Golang Slack Editing C2
Messaging mit AMQP mit kombu
Versuchen Sie Google Mock mit C.
Verwenden von Quaternion mit Python ~ numpy-quaternion ~
Versuchen Sie es mit matplotlib mit PyCharm
[Python] Verwenden von OpenCV mit Python (Basic)
Setzen Sie Python 3.x in Ubuntu ein
Erstellen Sie eine Python3-Umgebung mit Ubuntu 16.04
Verwenden Sie "% tensorflow_version 2.x", wenn Sie TPU mit Tensorflow 2.1.0 in Colaboratory verwenden
Verwenden eines Druckers mit Debian 10
Formatieren Sie die Sprachquelle C mit pycparser
Versuchen Sie es mit Folium mit Anakonda
Verwenden von OpenCV mit Python @Mac
Senden Sie mit Python mit Google Mail
Erstellen Sie mit Vagrant (Ubuntu 16.04) eine Umgebung für Django x Apache x mod_wsgi.
Vervollständigung von Python mit Emacs mit Company-Jedi
Harmonischer Mittelwert von Python (mit SciPy)
Löse ABC163 A ~ C mit Python
[Ubuntu] [Python] Objektverfolgung mit dlib
Rufen Sie C von Python mit DragonFFI auf
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
Erstellen Sie Awaitable mit der Python / C-API
Japanisieren Sie Matplotlib mit Alpine mit Docker
Starten Sie mehrere Instanzen in Postgresql 11.x.
Verwenden von Rstan aus Python mit PypeR
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
Meteorologie x Ruby ~ Ruby Scraping mit Mechanize ~
C-Code-Überprüfungstool mit pycparser
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
Zeichne Japanisch mit matplotlib auf Ubuntu
Schreiben der C-Sprache mit Sympy (Metaprogrammierung)
Mount S3 auf Ubuntu mit Goofys
Versuchen Sie es mit billigem LiDAR (Camsense X1)
Löse ABC168 A ~ C mit Python
Verwenden von Sitzungen und Reflexionen mit SQL Alchemy
Verwenden von Japanisch mit Rodeos IPython @ Windows
AtCoder ABC 114 C-755 mit Python3 gelöst
Löse ABC162 A ~ C mit Python