Hallo, ich würde gerne ein kleines Tool schreiben, das sowohl unter Linux als auch unter Windows vernüntig läuft, am liebsten jeweils OHNE Emulator. Java oder ähnliches möchte ich vermeiden. Wie macht man so etwas? Es gibt ja einige Programme, beispielsweise ADS2008 oder Eagle, die für beide Betriebssysteme erhältlich sind und vom look&feel her quasi identisch sind. Mein Tool soll über USB mit einer Mikrocontroller-Schaltung kommunizieren und ein paar Einstellungen in einem GUI-Dialogfenster ermöglichen. Außerdem soll man Konfigurationen in Dateien abspeichern können. Nichts wildes also. Allerdings ist ja das Ansprechen von Schnittstellen (USB) in den Betriebssystemen recht unterschiedlich und auch die Bibliotheken für das GUI sind ziemlich unterschiedlich. Wie schreibt man also portierbare Software? Wie macht CADsoft das mit Eagle? Schreibt man sich irgendeinen Layer zurecht, der ein Interface für beide Betriebssysteme nach unten darstellt und nach oben eine einheitliche API, oder gibt es bereits fertige Bibliotheken, die für beide Betriebssysteme eine einheitliche Schnittstelle darstellen? Wäre für Tips sehr dankbar...
Qt (wird auch von EAGLE benutzt) http://de.wikipedia.org/wiki/Qt_(Bibliothek) Den USB-Teil wirst Du aber Betriebssystem-spezifisch machen müssen (a la "#ifdef WIN32 ...")
Es gibt plattformunabhängige GUI-Bibliotheken, die auch andere Aspekte des darunterliegenden Betriebssystemes kapseln. Qt, wxWidgets etc. Sicherlich wird man bestimmte Funktionalitäten betriebssystemabhängig codieren müssen, aber der überwiegende Teil muss nur einmal entwickelt werden. www.trolltech.no www.wxwidgets.org
Sieh dir mal RealBasic an (www.realbasic.com)! Das kann aus dem gleichen Quelltext für Windows, Mac OS und Linux compilieren. Keine externe Laufzeitlib, keine DLLs, alles in einer EXE- bzw. APP-Datei. Frank
Danke für die Tips, genau so etwas wie wxwidgets habe ich gesucht! Kann der GNU C-Compiler eigentlich auch für WIN32 crosscompilen?
Ohne es getestet zu haben... Hat jemand mal Lazarus probiert? Ist eine OpenSource Variante von Delphi, die IDE samt Compiler gibt es u.a. für Linux und Windows. Und die generierten GUIs haben recht identisches Aussehen...
Probier mal folgende Kombination: www.fltk.org ... für die GUI libusb.sourceforge.net bzw. libusb-win32.sourceforge.net ... für USB Also ich hab mit beiden nur positive Erfahrungen gemacht.
> Kann der GNU C-Compiler eigentlich auch für WIN32 crosscompilen?
Damit meinst Du, ob der unter einem anderen OS als Windows laufende GCC
Win32-Binaries erzeugen kann? Vermutlich nicht "out-of-the-box", aber
beizubiegen müsste es ihm eigentlich sein, da es schließlich auch native
Win32-Ports davon gibt. Du musst allerdings komplett andere Include- und
Library-Verzeichnisse verwenden, und natürlich auch komplett
unterschiedlichen Startup-Code.
@Rufus: Genau, ich habe dazu jetzt MinGW gefunden: http://de.wikipedia.org/wiki/MinGW http://www.mingw.org/ Mal sehen, ob ich das zum Laufen bekomme...
Den MinGW benutze ich ab und zu um Windowssaftware kreuzzukompilieren, das funktioniert ziemlich gut, anschliessend kann man gleich noch mit Wine testen (ob das in deinem Fall mit USB etc. auch noch einfach so funkt sei einmal dahingestellt).
>> Kann der GNU C-Compiler eigentlich auch für WIN32 crosscompilen? > > > Damit meinst Du, ob der unter einem anderen OS als Windows laufende GCC > Win32-Binaries erzeugen kann? Vermutlich nicht "out-of-the-box", Kommt drauf an. Bei Debian und darauf basierenden Linux-Distributionen gibt's mingw32 als fertiges Paket. Da reicht ein "apt-get install mingw32", und schon hat man den Crosscompiler installiert. Damit kann man "out-of-the-box" auf das Win32-API zugreifen. Etwas komplizierter wird es dann, wenn man noch verschiedene zusätzliche Libs verwendet. Ich baue hier übrigens unter Ubuntu per mingw32 Qt-Programme für Windows. > Du musst allerdings komplett andere Include- und Library-Verzeichnisse > verwenden, und natürlich auch komplett unterschiedlichen Startup-Code. Die verwendet der Cross-Compiler automatisch. Das ist es ja, was ihn zum Cross-Compiler macht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.