Newsgroup: it.comp.os.linux.development
Titolo: Domanda su librerie grafiche ed accesso in memora

E' da un po di tempo che sto cercando di fare qualche programmino di
grafica, sotto Linux.
Premetto che la distro installata e la Mandrake 8.1, con gestore del desktop
KDE.
Premetto anche che ho provato ad eseguire i programmi da un emulatore di
terminale su KDE.
Prima ho tentato di fare funzionare quello che facevo sotto Ms-Dos,
scrivendo io le routine in assembly e compilandole con NASM, ma l'errore che
ottenevo era:
"segmentation fault"
Penso sia un errore di accesso alla memoria, dovuto alla differente modalita
operativa del processore e va bene, io ci avevo provato, tanto per provare.
Dopo vari tentativi, mi sono scocciato ed ho deciso di utilizzare librerie
piu "famose" che permettessero di utilizzare la grafica, ho installato
dunque, sia SVGALIB, che SDL, tuttavia cambiano le librerie ma il risultato
non cambia!
Sia l'esempio di SvgaLib che di SDL, mi danno sempre lo stesso errore in
esecuzione:
"segmentation fault"
Ho compilato e linkato in questo modo:
gcc -lSDL -shared esempio.c
gcc -lvga -shared esempio.c
E qui mi sorge un'altro dubbio, e corretto quello che ho scritto, cioe il
file che ottengo puo essere eseguito, cioe e linkato oppure e solo
compilato? Ho visto nella guida "man" che per linkare era necessaria
l'opzione -l, quindi presumo che il file che mi restituisce e un eseguibile
con tutte le librerie linkate. In questo caso un eseguibile composto da
esempio.c e le chiamate alle funzioni shared di SDL o SVGALIB.
Penso che il problema possa essere dovuto a due possibilita:
1) I programmi in questione non possono essere eseguiti sotto KDE, e sotto
gli emulatori di terminale, in questo caso come si esce da KDE? (Riesco solo
a passare da KDE a GNOME, ma non ad uscire da X)
2) Ho sbagliato qualcosa nella compilazione e nella creazione
dell'eseguibile, in questo caso cosa e che sbaglio? Cosa mi manca? Quale e
il dettaglio che mi sfugge?
Aggiungo un'altra domanda:
 Posso io in C o in C++ sotto Linux accedere ad un'area di memoria precisa?
E inoltre Linux su Intel, in che modalita operativa avvia il processore
(modalita protetta?)
Penso che qualcosa mi sfugge.
Ciao a tutti e spero che qualcuno possa riempire qualche tassello che mi
manca.
Ciao.

  Posso io in C o in C++ sotto Linux accedere ad un'area di memoria precisa?
Se ne hai i diritti, puoi accedere a /dev/mem (altamente sconsigliato).
-- 
Saluti,
    Mardy
http://castellina.org/interlingua

 Se ne hai i diritti, puoi accedere a /dev/mem (altamente sconsigliato).
Ci accedo con le funzioni di accesso ai files? Non č che mi piace molto
questo sistema, la frase "se ne hai i diritti" non mi piace, perchč il
programma se lo faccio, deve funzionare anche passandolo ad altri utenti,
quindi non mi va bene se funziona solo con "root".
Se accedo a "/dev/mem" per accedere ad un'area di memoria precisa devo usare
e funzioni di accesso ai file e la "fseek"?


Infatti non devi farlo. Perche' vuoi accedere ad un'area di memoria precisa?
Probabilmente non e' quello che ti serve.
--
Alessandro Staltari
staltari(a)
geocities.com

 e funzioni di accesso ai file e la "fseek"?
Per scrivere alle porte in passato io ho usato lseek.
Massimiliano

 risolto il problema nel modo sbagliato.
SDL mi dice che non trova i riferimenti alle funzioni.
SVGA è più umana, e mi da il seguente errore:
"./a.out error while loading shared libraries: libvga.so.1: cannot open
shared object file: no such file or directory"
Ho cercato su google per la risoluzione di questo errore, ed ho trovato che
poteva essere risolto inserendo in etc/ld.so.conf aggiungendo il percorso
delle local shared lib /usr/local/lib/ dove si trova il file che dice di non
trovare, ma comunque non funziona, continua a dare lo stesso errore.


Prova anche a dare il comando ldconfig dalla directory che contiene la
libreria svga.
--
Alessandro Staltari
staltari(a)
geocities.com