Hallo
ich habe eigentlich mal eine interessen ambitionierte frage,
welche möglichkeiten gibt es eigentlich(ohne wine und crossover,und vmware(indirekt) um windows basierte programme in für linux benutzbare programme zu verwandeln bzw 1 zu 1 zu portieren,ich hatte mal vor langer zeit etwas von alky(wenn ich mich richtig erinnere)gehört,oder müsste man alles per reverse engineering analysieren und dann auf den linux kernel anpassen?also mal von den rechtlichen sachen abgesehen,ich würde halt nur mal gern so die möglichkeiten kennen.
thx
Linux 15.062 Themen, 107.425 Beiträge
exe Dateien laufen überhaupt nicht unter Linux.
Wenn du dir einen Linuxkernel übersetzen willst, dann kannst du einstellen welche Binärformate der Linuxkernel unterstützen soll.
Linuxprogramme haben das Binärformat ELF. Dann gibt es noch aus älterer Format a.out (steht für Assembler Output).
Wenn du Javaprogramm unter Linux starten willst, dann mußt du auch die entsprechende Kerneloption aktivieren.
Es gibt von Trolltech Norwegen die QT Bibliothek. Die wurde extra für eine portable Programmierung entwickelt. Das bedeutet , man kann unter Linux ein QT Programm schreiben (oder umgekehrt unter Windows) , den Programmtext nach Windows kopieren und braucht ihn nur noch mal neu übersetzen.
Das spart viel Programmierzeit ein.
Javaprogramme sind auch plattformunabhängig. Man kann das Javaprogramm direkt von Windows nach Linux rüberkopieren und kann es auch gleich starten, ohne irgendeine Neukompilierung.
Dazu muß aber auch die gleiche , oder zumindest eine kompatible Javaumgebung installiert sein.
Das war bei Linux ein relativ großes Problem früher. Sehr viele Javaprogramme werden unter Windows mit der Javaumgebung von Sun Microsystems programmiert und unter Linux gab oder gibt es auch Javaumgenungen , die aber nicht 100 %ig kompatibel zur Umgebung von Sun Microsystems waren oder noch nicht sind.
Deshalb liefen manche Javaprogramme nicht unter Linux.
Installier am besten die Javaumgebung von Sun Microsystems. Da hast du 100 %ige Kompatibilität zwischen Windows und Linux.
unter Debian etch:
java -version
java version "1.5.0_14"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_14-b03)
Java HotSpot(TM) Client VM (build 1.5.0_14-b03, mixed mode, sharing)
Javaprogramme werden so gestartet:
java -help
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
Dann gibt es noch die Mono Entwicklungsumgebung von Novell.
Damit kann man C# (C Sharp) Programme für die .Net Umgebung von Microsoft programmieren.
Derzeit ist Mono noch nicht 100 %ig kompatibel zur aktuellen .Net Umgebnung von Microsoft.
Theoretisch lassen sich mit Mono Windowsprogramme (exe Dateien) unter Linux programmieren , die dann später unter Windows in der .Net Umgebung von Windows laufen.
Ich würde mal sagen wenn man plattformunabhängige Programme unter Linux /Windows schreiben will, dann ist die QT Bibliothek derzeit die beste Wahl.
Oder man schreibt Javaprogramme. Ich bin aber kein Freund von Java, weil Javaprogramme zu langsam laufen.
PS: Portable Programmierung setzt gewisse Standards vorraus, sonst funktioniert diese Portabilität nicht. Bei Unix wurde der POSIX Standard und die Single Unix Spezifikation entwickelt und Linux baut mit seiner Linux StandardBase auf Teile von POSIX und der Single Unix Spezifikation auf.
Bei diesen Standards ist das Interface ( Headerdateien) und die Bibliotheken genau definiert. Wenn Microsoft sich am POSIX Standard und der Single Unixspezifilation halten würde , dann könnte man so manches Linuxprogramm nach Windows kopieren und bräuchte den Programmtext nur noch neu übersetzen (mit minimalen Anpassungen).
Ich meine die Unterschiede zwischen Unix und Linux sind weitaus geringer als zwischen Windows und Linux.
Wenn dich Unix mit seiner portablen Programmierung interessiert, dann kannst du hier mal nachlesen:
http://www.unix.org
