Standard c++ programm unter Linux ausführen



  • Hallo,
    erstmal vorweg, ich bin komplett neu in Linux und hab vorher nur mit Windows gearbeitet. Ich hab nun zum ausprobieren mal ein standard konsolen c++ Programm, welches ich auf Windows compiliert hab über usb stick auf das Linux system gezogen, um auszuprobieren, ob es da auch in der Konsole läuft. Doch wenn ich die exe doppelklicke, öffnet sich der archievmanager...

    Kann ich keine exe dateien unter Linux ausführen, oder was mache ich falsch?



  • Linux und Windows haben ganz unterschiedliche Bibliotheken und Binärformate. Man kann nicht einfach eine Windows-Anwendung unter Linux ausführen (mit WINE ist das begrenzt möglich). Du solltest das Programm schon unter Linux neu kompilieren.



  • Okay, danke für die Antwort, ich werd das mal ausprobieren. Ist es denn möglich, bei der Kompilierung (auf einem Windows system) schon anzugeben, dass es für ein anderes system (in diesem Fall Linux) bestimmt ist?



  • Ja, mit einem Crosscompiler. Einen Crosscompiler einzurichten, ist aber nicht unbedingt eine einfache Sache. Daher würde ich dir empfehlen, dass du am besten unter Linux direkt kompilierst bzw. gleich dort entwickelst.



  • rüdiger schrieb:

    Linux und Windows haben ganz unterschiedliche Bibliotheken und Binärformate. Man kann nicht einfach eine Windows-Anwendung unter Linux ausführen (mit WINE ist das begrenzt möglich). Du solltest das Programm schon unter Linux neu kompilieren.

    Wenn du eine plattformunabhängige IDE wie zb Code:Blocks unter Windows genutzt hast, kannst du dir einfach die Linux-Version ziehen und exakt gleich kompilieren. 😉



  • du kannst dir zum einen cygwin installieren, einen linux-emulator für windows, wenn du wirklich auf deinem windows arbeiten willst. ich glaube, der MinGW kann auch im Linux-ELF-Format kompilieren.. Mal das Man durcharbeiten.

    Aaaaaber wenn du deine Programme mit der WinAPI gebastelt hast, hast du keine Chancen.

    Portable Programme werden übrigens noch immer am Günstigsten als Quellcode ausgeliefert und auf der Zielplattform zusammengebaut.



  • Cygwin ist kein Linux Emulator. Cygwin ist ein Port der GNU Utilities auf Windows. Und sag bloß nicht, GNU sei Linux. Sonst bekommst Du Ärger von Richard Stallman.



  • wo du recht hast.. im endeffekt hat man linux tools und auch eine linux konsole unter windows..
    ka. ich nutze cygwin auch nicht.. wäre mir zu blöde, dafür wine anzuwerfen..



  • wo ich schon mal Recht habe: Im Endeffekt hat man keine Linux Tools und auch keine Linux Konsole. Es sind GNU Tools und eine GNU Shell. Das sind die gleichen Tools, die man unter den gängigen Linux Distributionen findet. Sie sind aber eben keine Linux Tools.


  • Mod

    Für die, die nicht verstehen, worum es hier geht:
    http://en.wikipedia.org/wiki/GNU/Linux_naming_controversy

    Linux ist ein Betriebssystemkernel. Ein Betriebssystemkernel kennt sich mit Hardware aus, hat Treiber, verwaltet Speicher, so ein Kram eben. Aber er stellt der Anwendungssoftware bloß eine abstrahierte Schnittstelle für die Hardware zur Verfügung, ein Anwender kann mit dem Kernel alleine herzlich wenig machen.

    GNU (GNU is not Unix) ist, trotz des Namens, die wohl bedeutendste Implementierung des Unix-Betriebssystems. Das ist das, was man als Anwender tatsächlich sieht: Die Konsole, die ganzen Tools, der GCC und auch die ganze Oberfläche GNOME gehören dazu. GNU selber hat aber keine Ahnung von Hardware, es braucht irgendeinen unterliegenden Kernel, um überhaupt zu laufen.

    Und die Kombination GNU mit Linux als Kernel ist das, was hier im Thread (und überhaupt umgangssprachlich) als Linux bekannt ist.

    (Es gibt auch einen eigenen Betriebssystemkernel von GNU, GNU Hurd. Aber dessen Entwicklungsgeschichte lese man selber nach, falls man noch nie davon gehört hat. Ist eine interessant Geschichte von Fehlschlägen.)


Anmelden zum Antworten