Problemi GCC e header X11

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
phobos3576
Staff
Staff
Messaggi: 2980
Iscritto il: dom 17 apr 2005, 0:00
Slackware: 13.1
Kernel: 2.6.37-smp
Desktop: KDE 4.5.3

Problemi GCC e header X11

Messaggio da phobos3576 »

Qualcuno di voi riesce a compilare questo programma C?

Codice: Seleziona tutto

#include <stdio.h>
#include <unistd.h>

#include <X11/Xlib.h>
#include <X11/keysym.h>
#include <X11/extensions/XTest.h>

int main()
{
	Display *display;

	if ((display = XOpenDisplay(NULL)) == NULL) {
		printf("error: couldn't create a connection\n");
		return 1;
	}
	printf("first test started\n");
	sleep(55);
	XWarpPointer(display, None, None, 0, 0, 0, 0, 0, 0);
	XFlush(display);
	sleep(55);
	printf("first test finished\n");

	printf("second test started\n");
	XTestFakeRelativeMotionEvent(display, 0, 0, 0);
	XFlush(display);
	sleep(55);
	printf("second test finished\n");

	printf("third test started\n");
	XTestFakeKeyEvent(display, XKeysymToKeycode(display, XK_Shift_L), True, 0);
	XTestFakeKeyEvent(display, XKeysymToKeycode(display, XK_Shift_L), False, 0);
	XFlush(display);
	sleep(55);
	printf("third test finished\n");

	return 0;
}
Il GCC mi dice che le funzioni dichiarate nei vari header di X11 non sono state trovate; ad esempio:

Codice: Seleziona tutto

undefined reference to `XOpenDisplay'
Sulla Slackware ho tutti i necessari link simbolici a X11.
Cercando in Rete ho scoperto che è un problema noto, ma mi sembra strano che non lo abbiano ancora risolto; i link simbolici creati automaticamente durante l'installazione della Slackware dovrebbero servire proprio a risolvere il problema.

Avatar utente
phobos3576
Staff
Staff
Messaggi: 2980
Iscritto il: dom 17 apr 2005, 0:00
Slackware: 13.1
Kernel: 2.6.37-smp
Desktop: KDE 4.5.3

Messaggio da phobos3576 »

Mi rispondo da solo:

Codice: Seleziona tutto

gcc -L/usr/X11R6/lib -lX11 -lXtst nomefile.c

Rispondi