2009-05-18 1 views
6

L'articolo Porting Qt for Embedded Linux to Another Operating System elenca cinque cose da fare per portare Qt per Embedded Linux su un altro sistema operativo. Dall'articolo:È il porting qt su un altro sistema operativo semplice come questo?

Ci sono diversi problemi da considerare se si intende effettuare la propria porta su un altro sistema operativo. In particolare, è necessario risolvere Qt per la memoria condivisa e i semafori di Embedded Linux (usati per condividere le regioni delle finestre) e fornire qualcosa di simile ai socket dei domini Unix per le comunicazioni tra le applicazioni. È inoltre necessario fornire un driver per lo schermo e, se si desidera implementare il suono, è necessario fornire il proprio server audio. Infine, è necessario modificare il dispatcher di eventi utilizzato da Qt per Embedded Linux.

È davvero così facile portare Qt su un altro SO o ho perso alcune informazioni?

+10

Nessuna di queste cose mi sembra particolarmente facile. –

+0

I passaggi elencati non dovrebbero essere troppo complicati dato che si dispone di un sistema operativo che supporta i meccanismi descritti nell'articolo. –

risposta

0

Dopo aver esaminato questo aspetto in modo più approfondito, sono giunto alla conclusione che l'articolo "Porting Qt per Linux incorporato in un altro sistema operativo" presuppone che si passi il Qt a un sistema operativo molto simile a Linux.

1

Supponendo di trovare tutte queste cose facili, quindi la porta è facile.

2

Dal Qt è stato portato su un gran numero di volte sembra logico che sarebbe intrinsecamente semplice. Tuttavia, il problema riguarda davvero la piattaforma su cui si sta effettuando il porting e il numero di funzionalità attualmente supportate.

0

Ho tentato questo e sto facendo progressi. Alcune difficoltà:

IDE - Devo aggiungere manualmente tutti i file Qt e combattere il compilatore con #ifdefs fino a quando non costruisce con tutte le dipendenze in atto.

Linux (ness) - Ho dovuto disabilitare tutte le cose Linux/Windows che non sono supportate nel mio SO di destinazione: thread, socket, processi. Anche i timer sono leggermente diversi.

Suggerimenti: Inizio piccolo: Ho compilato QtCore come libreria standard all'interno del mio IDE, il prossimo è QtGui che è un colosso rispetto a QtCore.

Ho intenzione di eseguire solo un singolo QThread, quindi ho creato artificialmente un oggetto Thread per evitare i puntatori nulli. Non è possibile compilare le informazioni sui thread poiché è la chiave di tutti i QObject.

Finora ho un qeventloop in esecuzione in un'applicazione qcoreana. Ho scritto alcuni assembly inline ma ho avuto serie difficoltà con il mio IDE e la compilation. L'ho lasciato in C++ e lasciato che sia l'assemblatore a gestirlo per me. Poiché sono single-threaded, non mi preoccupo troppo dei dati condivisi/accesso esclusivo come richiesto dalle operazioni atomiche.