2009-05-18 1 views
6

Der Artikel Porting Qt for Embedded Linux to Another Operating System listet fünf Dinge auf, die Sie tun müssen, um Qt für Embedded Linux auf ein anderes Betriebssystem zu portieren. Aus dem Artikel:Portiert qt zu einem anderen Betriebssystem so einfach?

Es gibt mehrere Probleme zu beachten, wenn Sie Ihren eigenen Port zu einem anderen Betriebssystem tun möchten. Insbesondere müssen Sie Qt für den gemeinsam genutzten Speicher und die Semaphore von Embedded Linux auflösen (die zum Freigeben von Fensterbereichen verwendet werden), und Sie müssen etwas bereitstellen, das den Unix-Domain-Sockets für die Kommunikation zwischen Anwendungen ähnelt. Sie müssen auch einen Bildschirmtreiber bereitstellen, und wenn Sie Sound implementieren möchten, müssen Sie einen eigenen Soundserver bereitstellen. Schließlich müssen Sie den Event-Dispatcher ändern, der von Qt für Embedded Linux verwendet wird.

Ist es wirklich so einfach, Qt zu einem anderen Betriebssystem zu portieren, oder habe ich einige Informationen verpasst?

+10

Keines dieser Dinge klingt besonders einfach für mich. –

+0

Die aufgeführten Schritte sollten nicht zu kompliziert sein, da Sie über ein Betriebssystem verfügen, das die in diesem Artikel beschriebenen Mechanismen unterstützt. –

Antwort

0

Nach genauerer Untersuchung bin ich zu dem Schluss gekommen, dass der Artikel "Portierung von Qt für Embedded Linux auf ein anderes Betriebssystem" davon ausgeht, dass Sie Qt auf ein sehr "linuxartiges" Betriebssystem portieren.

1

Angenommen, Sie finden alle diese Dinge einfach, dann ist der Port einfach.

2

Da Qt eine große Anzahl von Zeiten portiert wurde scheint es logisch, dass es von Natur aus einfach sein würde. Das Problem liegt jedoch tatsächlich auf der Plattform, auf die Sie portieren und wie viele Funktionen es derzeit unterstützt.

0

Ich habe dies versucht und mache derzeit Fortschritte. Einige Schwierigkeiten:

IDE - Ich muss manuell alle Qt-Dateien hinzufügen und kämpfen den Compiler mit #ifdefs, bis es mit allen Abhängigkeiten an Ort und Stelle baut.

Linux (Ness) - Ich musste alle Linux/Windows-Dinge deaktivieren, die nicht in meinem Ziel-Betriebssystem unterstützt werden: Threads, Sockets, Prozesse. Selbst die Timer sind etwas anders.

Tipps: Start klein: Ich kompilierte QtCore als Standard-Lib innerhalb meiner IDE, als nächstes ist QtGui, die ein Ungetüm im Vergleich zu QtCore ist.

Ich plane, nur einen einzigen QThread auszuführen, also muss ich ein Thread-Objekt künstlich erzeugen, um Nullzeiger zu vermeiden. Sie können Thread-Informationen nicht kompilieren, da dies der Schlüssel für alle QObjects ist.

Bisher habe ich eine qeventloop innerhalb einer qcoreapplication läuft. Ich schrieb einige Inline-Assembly, hatte aber ernsthafte Schwierigkeiten mit meiner IDE und Kompilierung. Ich habe es in C++ gelassen und lasse den Assembler es für mich handhaben. Da ich single-threaded bin, mache ich mir keine Gedanken über die gemeinsamen Daten/exklusiven Zugriffe, wie sie die atomaren Operationen erfordern.