Hi,
sorry, falls das eine blöde Frage ist; aber mich würde brennend interessieren, ob man mit Visual C++ Projekte, die z.B. nur die Standardbibliotheken und gtk libs verwenden, "einfach so" für Linux kompilieren kann, damit es dort ausführbar ist?
das ist *überhaupt keine* blöde Frage, im Gegenteil: Sie ist sehr sinnvoll und vernünftig.
Nein, das geht (leider) nicht. Windows und Linux verwenden ein unterschiedliches Binärformat für Programme (sprich die ausführbaren Dateien müssen anders aufgebaut sein).
Klar, aber theoretisch könnte man trotzdem denselben Compiler verwenden. Wenn man es ganz genau nimmt, macht ja erst der Linker aus den Object-Dateien das, was das Betriebssystem nachher direkt als "ausführbare Datei" akzeptiert.
Das Problem dürfte eher sein, dass das Object-Format nicht standardisiert ist die Compilerhersteller da alle ein ähnliches Prinzip, aber im Detail ein ganz anderes Format verwenden. Man bräuchte also einen Linker, der das Microsoft-Object-Format liest und daraus Linux-taugliche ELFs erzeugt. Ich glaube aber nicht, dass es einen solchen Linker gibt.
Das hätte den Vorteil, dass nicht wieder die vielen vielen Parameter für gcc zusammengesammelt werden müssten und ich jedesmal alles auch mit dem 2. Compiler testen muss, obwohl ich vom einen weiß, dass es ohne großes Zutun schon klappt.
Es hätte auch den Vorteil, dass man mit einem vertrauten Entwicklungssystem arbeiten kann und trotzdem Code für unterschiedliche Plattformen erstellen kann.
Der umgekehrte Weg geht aber: Du kannst deine Windowsprogramme auch mit dem gcc kompilieren. Das ganze heißt MinGW und ist eine Portierung des gcc auf Windows. Dazu gehört auch noch Portierung der Bourne Shell, damit auch die ganzen netten GNU Build Tools wie make, autoconfig und automake laufen. Die damit kompilierten Programme laufen dann auch ohne MinGW.
Ich kann mir aber nicht vorstellen, dass MinGW auch bestehende Projekte, die auf MS Wuschel Studio ausgelegt sind, interpretieren und korrekt weiter verarbeiten kann. Dazu sind vermutlich eine Menge Anpassungen nötig.
Allerdings können viele Entwicklungsumgebungen mit den Kommandozeilen-Versionen beliebiger Compiler/Linker anstatt ihrer eigenen arbeiten. Ich weiß nicht, ob MSVS das kann, aber wenn, dann könnte man auch hier mit der vertrauten Umgebung weiterarbeiten, während im Hintergrund ein gcc/MinGW werkelt und das Projekt mal für Windows, mal für Linux übersetzt.
Reine Theorie - aber immerhin vorstellbar.
So long,
Martin
Ist die Katze gesund,
freut sich der Hund.