Newsgroup: it.hobby.elettronica.digitale
Titolo: QT Embedded: le basi

Ciao,
domanda sulle QT Embedded ma valida in generale.
Allora, ho un netbook che voglio usare per cominciare a sviluppare 
applicazioni embedded (appunto in Qt). Uso il netbook per comodità, poi 
la scheda potrebbe essere una delle tante con Atom o ARM a bordo.
Ho installato Linux Tinycore e ho configurato un accesso SSH così da 
connettermi dal computer di sviluppo.
Faccio una semplice domanda:
come dovrei organizzare il pc di sviluppo e quello target?
Io direi: sul PC di sviluppo (che ovviamente dovrà avere anch'esso 
Linux) installo l'SDK delle Qt (o di un altro ambiente) con cui scrivo 
il codice e lo compilo.
La compilazione dovrà essere cross se voglio eseguirlo su entrambi i PC, 
oppure posso compilarlo solamente per il target giusto?
Ma in quest'ultimo caso devo installare l'SDK per Qt Embedded? 
L'intenzione è di non usare il server X sulla scheda target.
Su quest'ultima invece devo installare qualcosa oppure mi basta solo 
copiare l'eseguibile (e le eventuali dipendenze) ?
Se c'è un tutorial che spiega questi concetti base lo leggo volentieri, 
altrimenti vedo di cavarmela con qualche dritta :)
Grazie!
Marco

 copiare l'eseguibile (e le eventuali dipendenze) ?
In attesa di suggerimenti ho iniziato a fare qualche prova.
Ho installato Ubuntu 10.04 sul pc desktop e l'ultima versione di 
QtCreator con tutto l'SDK appresso.
Ho provato a ricompilare le Qt in modo statico (per semplificare la 
gestione delle dipendenze) ma mi da errore.
Allora ho provato a seguire la strada più semplice consigliata da Nokia: 
con ldd ./applicazione ho trovato tutte le dipendenze. Poi sono andato 
nel pc target e ho verificato se fossero presenti. Quelle mancanti le ho 
copiate dove richiesto.
Alla fine ho copiato l'eseguibile (verificando che venissero mantenuti i 
permessi) e ho provato a lanciarlo.
Mi restituisce un laconico:
./analogclock: line 1: syntax error: unexpected "("
L'esempio è quindi quello contenuto in /examples/widget/analogclock
Sulla macchina remota c'è la distro Tinycore (con server X).
A qualcuno è mai capitato qualcosa del genere?
Marco

 Marco

 similare ) non mi sembra ci sia la stringa "syntax error".
Hai provato con un semplicissimo hello world in C?
Perché a me da lo stesso errore!
Marco

 Marco

 solo con roba Qtopia
Dunque, ho risolto.
La cosa strana - come sempre - è che inizialmente continuava a darmi lo 
stesso errore. Poi a furia di riavviare-ricompilare ora funziona 
perfettamente. Sia l'helloworld in C sia un eseguibile Qt.
Una cosa molto utile che mi è stata suggerita (anche se la saprai già) è 
di usare il comando file nome_eseguibile così da verificare eventuali 
incongruenze.
Una domanda, visto che ci stai lavorando anche tu. Anzi due :)
1. ora ho compilato il programma con le Qt shared e ho utilizzato lo 
script suggerito da Nokia per andare a pescare le librerie necessarie 
nello stesso percorso dell'applicazione. Tu consigli l'approccio con le 
Qt statiche? Tieni conto che non devo distribuire le applicazioni, ma 
solo configurare una macchina per far girare il mio eseguibile.
2. volendo fare il passo successivo, cioè avviare il programma senza 
server X, cosa devo modificare in fase di compilazione? Se ho capito 
bene posso usare le stesse Qt per X11 anche per compilare programmi 
"embedded". Del resto è quello che voglio: a volte ho bisogno del server 
X a volte no, quindi mi servono entrambe le strade!
Grazie!
Marco

 Marco

 l'altra prova non la posso proprio fare
Ah ok.
Io non vorrei usare le qtopia, mi basta avviare la mia applicazione senza X.
Leggendo in giro pare che debba ricompilare le Qt con il flag -embedded 
così da attivare appunto il framebuffer.
Devo capire bene come affiancarle a quelle esistenti e non sovrascriverle.
Marco

 Devo capire bene come affiancarle a quelle esistenti e non sovrascriverle.
Yuppie!
Ci sono riuscito :)
In effetti *dopo* non è così assurdo come sembra. Solo che se non l'hai 
mai fatto non è così intuitivo.
Semplicemente ho scaricato le Qt Embedded e le ho compilate passando i 
parametri -embedded x86 e -prefix altro_path, così da installarle in una 
diversa cartella.
Poi da QtCreator ho aggiunto un secondo percorso di qmake (oltre a 
quello per le X11) così da utilizzarlo per compilare il codice.
Sulla macchina target ho dovuto abilitare il framebuffer e... funziona!
L'unica cosa strana è che utilizzando lo script per far cercare le 
librerie nella stessa directory dell'eseguibile le libreria le trova, 
mentre cerca la cartella font nel percorso della macchina host.
Temporaneamente ho dovuto ricreare il ramo (che è una atrocità...) ma 
non ho capito perché non trova la cartella fonts che è nello stesso 
percorso dove trova le librerie...
Marco