Forum: PC-Programmierung Programm gleichzeitig für Windows UND Linux?


von Oliver (Gast)


Lesenswert?

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...

von madler (Gast)


Lesenswert?

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 ...")

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

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

von Oliver (Gast)


Lesenswert?

Danke für die Tips, genau so etwas wie wxwidgets habe ich gesucht! 
Kann der GNU C-Compiler eigentlich auch für WIN32 crosscompilen?

von Hmm... (Gast)


Lesenswert?

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...

von Gast (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> 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.

von Oliver (Gast)


Lesenswert?

@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...

von Bartli (Gast)


Lesenswert?

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).

von Rolf Magnus (Gast)


Lesenswert?

>> 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
Noch kein Account? Hier anmelden.