You are not logged in.

Nimm2

Trainee

  • "Nimm2" is male
  • "Nimm2" started this thread

Posts: 63

Date of registration: Jan 12th 2008

Location: Hannover

1

Wednesday, March 17th 2010, 10:28am

Unix-ausführbare exe-Datei zu eine Windows-exe-Datei transformieren?

Hallo,

ich möchte nun unter ubuntu arbeiten, möchte aber auch gerne dass ausführbare (exe-)Dateien die z.B. durch C/C++ erstellt wurden dann auch auf einem Windows-System laufen.

Ist das irgendwie möglich, diese für das bestimmte System zu transformieren oder sowas?

Gruß

  • "Schokoholic" is male

Posts: 2,518

Date of registration: Oct 4th 2006

Location: Hannover

Occupation: Haarspaltung

2

Wednesday, March 17th 2010, 10:44am

Um mal kurz zu klären ob ich das richtig verstanden habe: du möchtest unter Linux Software entwickeln die dann sowohl unter Linux als auch unter Windows funktioniert?

Falls das so sein sollte musst du deine Software in jedem Fall von vornherein so entwickeln, dass du nur Bibliotheken benutzt die auf beiden Systemen zur Verfügung stehen. POSIX- oder Win32-Systemaufrufe sind dann zum Beispiel tabu. Hilfreich können hier Bibliotheken wie GTK+ oder ähnliche sein, die sowohl für Windows als auch für Linux existieren -- diese muss dann allerdings auch auf dem Windows-System installiert sein, damit das Programm dort läuft. Außerdem musst du die Programme in jedem Fall für jede Plattform separat kompilieren.

Eine weitere Alternative ist die Verwendung von cygwin, das quasi eine Unix-Umgebung für Windows ist. Allerdings musst du auch hier das Programm direkt auf dem Windows-System in cygwin kompilieren. (PS: cygwin stinkt)

Auf der anderen Seite (Windows-Programme auf Linux ausführen) gibt es noch wine, sogar originale unveränderte Windows-Programme unterstützt. Wenn man Glück hat.

Wenn es nicht unbedingt C/C++ sein muss kannst du auch einen Blick auf Managed Code (Java, C# (bzw. CLI/.NET im Allgemeinen)) werfen.

In jedem anderen Fall muss ein Programm speziell als multiplattform-Software entwickelt worden sein, damit es sowohl unter Linux als auch unter Windows laufen kann.

Einen "Umwandler" wo man ein Unix-Executable reinsteckt und eine Windows-exe herausbekommt gibt es meines Wissens nach nicht.

3

Wednesday, March 17th 2010, 11:49am

Gibt afaik den mingw32-Compiler auch für Linux als Cross-Compiler. Kommt man zumindest mit Ubuntu recht gut ran. Habe ich mal in einem Projekt gehabt, dass ich die Makefile so gemoddet habe, dass sie sowohl für Linux eine Elf-Binary oder wie auch immer das da heißt compiled bekomme und für Windows ne stinknormale exe. Muss man nur aufpassen, dass die Libs richtig gelinkt werden, weil die für Windows natürlich schon im passenden Format sein müssen, also d.h. spezielle Libs für Win32-Mingw. Braucht man aber nur wenn man externe Libs und nicht nur die Standardbibl. von C verwendet.

Jedenfalls Stichwort wäre Cross-Compiler bzw. konkret dann mingw32.

Cid

Trainee

  • "Cid" is male

Posts: 81

Date of registration: Oct 5th 2005

Occupation: Informatik

4

Wednesday, March 17th 2010, 4:31pm

Quoted

Gibt afaik den mingw32-Compiler auch für Linux als Cross-Compiler
mingw32 auch für Linux als Cross-Compiler --> du compilierst die Software unter Linux für Windows?
Cross-Compiler heißt ja, dass du eine Software für andere Hardware oder ein anderes Betriebssystem compilierst...

€dit:
* Building a Linux-hosted Windows cross-compiler
* Building a Windows-hosted Linux cross-compiler

gefunden auf der Seite... Linux-Programm um Windows-Programme zu compilieren gibt es...
das zweite führt zu "Seite nicht gefunden"...

--> mingw ist wohl nur für Windows?

Vielleicht gibt es ja noch mehr auf der Seite... muss lernen und bin ja eh keine Suchmaschine... ;)
Ich bin ein Zweitsemester - bitte, belästigen Sie mich nicht damit! :sleeping:
Ein Mathematiker ist eine Maschine, die Kaffee in Theoreme verwandelt. -Paul Erdös

This post has been edited 1 times, last edit by "Cid" (Mar 17th 2010, 4:40pm)


Ingrim Ingrasch

Erfahrener Schreiberling

  • "Ingrim Ingrasch" is male

Posts: 325

Date of registration: Oct 8th 2003

Location: Märchenland

Occupation: Assistant Director, IT Operations

5

Thursday, March 18th 2010, 8:55am

http://forums.codeblocks.org/index.php?topic=3343.msg35536

Da ist nen HowTo für Dapper Drake (ubuntu). Müsstest schaun wie du das für dich anwendest ^^

Cid

Trainee

  • "Cid" is male

Posts: 81

Date of registration: Oct 5th 2005

Occupation: Informatik

6

Thursday, March 18th 2010, 6:56pm

http://forums.codeblocks.org/index.php?topic=3343.msg35536

Da ist nen HowTo für Dapper Drake (ubuntu). Müsstest schaun wie du das für dich anwendest ^^
Bin nur mal eben drübergeflogen, aber sieht aus nach
Linux für Compile
Wine (Windows-Emu) für's Ausführen

also bleibt weiterhin die Frage, ob es einfach ist ein Programm mal eben portieren zu lassen (sei es nun von Windows auf Linux oder andersrum).
Alleine Pfadangaben könnten zu Problemen führen?!? (gut, in C kann man ja mehrere Konstanten einführen, die man je nach OS beim Kompilieren verwendet.
Ich bin ein Zweitsemester - bitte, belästigen Sie mich nicht damit! :sleeping:
Ein Mathematiker ist eine Maschine, die Kaffee in Theoreme verwandelt. -Paul Erdös

Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

7

Thursday, March 18th 2010, 9:24pm

Java? *duck und weg* :D
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

8

Thursday, March 18th 2010, 9:25pm

Wine (Windows-Emu)????? Google mal wofür Wine steht. ;-)

Abgesehen davon... nein. Sollte kein Problem sein was zu portieren, wenn die Abhängigkeiten auch schon portiert worden sind. ;-)

Ingrim Ingrasch

Erfahrener Schreiberling

  • "Ingrim Ingrasch" is male

Posts: 325

Date of registration: Oct 8th 2003

Location: Märchenland

Occupation: Assistant Director, IT Operations

9

Friday, March 19th 2010, 9:35am

Java? *duck und weg* :D
Herrgottt.... Hilfe ;-)

Cid

Trainee

  • "Cid" is male

Posts: 81

Date of registration: Oct 5th 2005

Occupation: Informatik

10

Friday, March 19th 2010, 11:32am

Java? *duck und weg* :D
.oO(Ich wollte diese Triviallösung nicht laut aussprechen... jetzt hast du es getan...)
Verbrennt diesen Ketzer...
Wine (Windows-Emu)????? Google mal wofür Wine steht. ;-)

Abgesehen davon... nein. Sollte kein Problem sein was zu portieren, wenn die Abhängigkeiten auch schon portiert worden sind. ;-)
WINE ist kein Emulator (um mal bei der deutschen Übersetzung zu bleiben), na und? Politiker sagen auch, dass es keine Steuererhöhung gibt, senken die Steuern und holen sich dann noch mehr Kohle dann über andere Abgaben.... ;)
Jaja, ist gut, solange das IS identisch ist, kann man ein bisschen umbiegen am Programm, paar "Treiber" zur Verfügung stellen und schon muss man nix emulieren (im eigentlichen Sinn) - sondern kann die Software auch so ausführen...

naja, portieren ist ja so ne Sache... klar, man kann die Routinen (fast) alle übernehmen...
aber dann sind es hier ein paar Inkompatiblitäten, da einige Änderungen an z.B. String-Routinen, da Unterschiede zwischen den Compilern, ..... - bei "identischen" Compilern für Linux und Windows wäre es natürlich einfach (nur Pfade, ... anpassen), aber bisherige Vorschläge liefern nur Programme für ein OS...

am Ende muss man doch wieder zwei Codes warten / in einem Code die ganzen #ifdef mitlesen, wenn man was ändert...

BTW: Mir reichen die bisher vorgeschlagenen Lösungen... weiß ja nicht wie es mit dem Threadersteller ist... ;)
Ich bin ein Zweitsemester - bitte, belästigen Sie mich nicht damit! :sleeping:
Ein Mathematiker ist eine Maschine, die Kaffee in Theoreme verwandelt. -Paul Erdös