Eigene exe in Raspbian ausführen

  • Hi Leute,

    ich würd gerne meine unter Windows mit Visual C++ 2008 geschriebene exe in Raspbian starten... ich bekomme aber bloß nen promt mit welcher App ich die exe öffnen möchte. Hat wer nen Tipp?

    Freu mich über Antworten! :thumbs1:

    Peace, Poochie

    • Offizieller Beitrag

    :denker: Ist die Frage ernst gemeint? EXE kommen aus der Windowswelt und gehören da auch hin.. Was ist denn das für ein Tool?

    Es gibt Wine, mit welchem du es versuchen könntest, ob dafür allerdings die Rechenpower des Pi reicht....
    Schreib es einfach neu, das sollte schneller gehen.

  • Mal ganz davon ab, dass Wine auf dem Pi nur ARM-Code ausführen könnte, welcher aus der Windows-Welt stammt, würde ich die Idee ganz schnell fallen lassen und das Programm in einer vernünftigen Sprache, wenn schon, neu schreiben.


    Grüße
    Hustenbold

    [font="Courier New"]

    Code
    print("Hallo Welt!")


    [/font]

  • Hallo,

    Wine läuft auf dem Raspberry nicht - zum einen wegen des Prozessors und zum anderen wegen des geringen Speichers.

    Wie schon meine Vorredner: Quellcode nehmen und auf den Raspberry übertragen und dort laufen lassen.

    Beste Grüße

    Andreas

    P.S.: Ich hoffe auch, dass uns hier keiner auf die Schippe nehmen will ...

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Wie gesagt mir Wine nicht aber mit mono. Mono ist eine freie (=OpenSource) implementierung vom .NET.Framework und läuft auch am Pi. Mit

    Code
    sudo apt-get install mono-runtime

    installierst du mono. Dein Programm kannst du dann mit "mono programmname" starten

    Es gibt KEINE dummen Fragen!


  • :denker: Ist die Frage ernst gemeint? EXE kommen aus der Windowswelt und gehören da auch hin.. Was ist denn das für ein Tool?

    Es gibt Wine, mit welchem du es versuchen könntest, ob dafür allerdings die Rechenpower des Pi reicht....
    Schreib es einfach neu, das sollte schneller gehen.

    Die Frage ist ernst gemeint :P

    Was bedeutet "EXE kommen aus der Windowswelt"? Heißt das, man kann Executables nur unter Windows öffnen?

    Nebenbei: Bin Elektrotechnik- kein Informatikstudent... habe die Systemabhängigkeiten nie verstanden. Den Raspberry habe ich mir vor 2 Tagen gekauft, bis dahin habe ich noch nie ein anderes Betriebssystem als Windows benutzt. Ich bitte also um Nachsicht :D

    Wie genau soll ich das Programm denn neu schreiben? Meinst du vielleicht eher das Compilen? :huh:

    Danke für die Antwort.

    Zitat


    [font="Tahoma, Verdana, Arial, sans-serif"]Geschrieben von Hustenbold - Gestern 23:04
    Mal ganz davon ab, dass Wine auf dem Pi nur ARM-Code ausführen könnte, welcher aus der Windows-Welt stammt, würde ich die Idee ganz schnell fallen lassen und das Programm in einer vernünftigen Sprache, wenn schon, neu schreiben.


    Grüße
    Hustenbold[/font]


    Okay, vernünftige Sprache... Was ist das? Was verstehst du unter "vernünftige Sprache"? Ist C++ nicht vernünftig?

    Danke auch für deine Antwort.


    Also ich soll auf dem Raspberry compilen? Da muss ich doch wahrscheinlich erstmal mein Visual Studio installieren, wo bekomme ich dann meine Bibliotheken her? :denker:
    Scheint alles nicht so einfach zu sein wie ich es mir vorgestellt hatte, aber als Student hat man ja Zeit :D
    Danke für die Antwort, Andreas.

    Zitat


    [font="Tahoma, Verdana, Arial, sans-serif"]Wie gesagt mir Wine nicht aber mit mono. Mono ist eine freie (=OpenSource) implementierung vom .NET.Framework und läuft auch am Pi. Mit[/font]
    [font="Tahoma, Verdana, Arial, sans-serif"]Code: Alles markieren
    [/font]

    Code
    sudo apt-get install mono-runtime

    [font="Tahoma, Verdana, Arial, sans-serif"]installierst du mono. Dein Programm kannst du dann mit "mono programmname" starten[/font]

    Erstmal danke auch für deine Antwort. Ich habe mich leider noch nicht wirklich mit dem Pi befasst... Raspbian startet dort automatisch. Wo geb ich den Code ein?


    Poochie out.

  • Das Programm nutzt die API vom Microsoft Wireless XBOX360 Controller und dient als Steuerung. Als nächstes wollte ich Ausgaben auf die GPIO vom Raspberry implementieren.

    gibts keine Möglichkeit unter Windows zu programmieren und das Programm unter Linux zum laufen zu kriegen? Wenn Paul mir erklärt wie ich Mono unter Raspbian installiere, probier ich das.

  • Das wird nix. Hast du überhaupt einen Treiber für den Controller, der auf (ARM-) Linux läuft?
    Und: Wie ich das Sehe läuft das über XInput, eine Bibliothek von DirectX...

    P.S.: Was hat das denn damit zu tun, was man studiert? Und selbst die Elektrotechniker haben bei uns Informatik-Vorlesungen. Also zumindest die ganz grundlegenden Basics sollte man auch an deiner Hochschule beigebracht bekommen oder zumindest in der Lage sein, solch einfache Fragen selbst zu recherchieren...

  • Ich glaube die API wird dir noch viel ärger verursachen. Da sie vermutlich nicht am Pi funktioniert und du (soweit ich weiß) keine möglichkeit hast über mono / .NET die GPIO direkt anzusteuern.
    Visual Studio arbeitet nun einmal mit .NET. Ich würde dir empfehlen und weggehen von Visual Studio und mit reinem C++ zu arbeiten. C++ ist eine super Sprache und du musst sie ja auch nicht neu lernen. Am Pi ist direkt eine IDE Namens Geany installiert mit der du arbeiten kannst. Du kannst dir auch für Windows eine IDE installieren müsstest dann aber einen crosscompiler verwenden, da du ja ein Programm für einen ARM-Prozessor schreibst. ".exe"-Dateien kommen aus der Windows-Welt. Unter Linux haben die meisten kompillierten und ausführbaren Dateien überhaupt keine Dateierweiterung.

    Ich habe noch eine Englische C/C++ Anleitung für den PI gefunden: http://www.raspberry-projects.com/pi/programming-in-c

    Es gibt KEINE dummen Fragen!


  • Was bedeutet "EXE kommen aus der Windowswelt"? Heißt das, man kann Executables nur unter Windows öffnen?

    Unter Linux gibt es zwar auch "Executables" aber keine *.exe
    Unter Linux gibt es keine *.dll sondern Libraries

    Jetzt sollte man merken dass das nicht wirklich kompatible zu sein scheint

    Desweiteren ist aber auch das Dateiformat von Windows EXE 'n eine andere als die Binaries für Linux:

    Zitat


    EXE (für engl. executable, ausführbar) ist eine Dateinamenserweiterung für ausführbare Dateien unter den Betriebssystemen DOS, Windows, OS/2, OpenVMS und Symbian OS.

    EXE-Dateien sind durch die Dateiendung „.exe“ gekennzeichnet. Es gibt jedoch verschiedene Datenformate, die diese Erweiterung nutzen. Die häufigsten EXE-Dateien sind Programme für MS-DOS oder Microsoft Windows. Beide beginnen mit dem Header einer MZ-Datei, Dateien für das 16-Bit-Windows verwendet das New Executable-Format (NE),[1] solche für das 32-Bit und 64-Bit-Windows das erweiterte Format Portable Executable (PE). DOS und Windows-EXE-Dateien sind daher daran zu erkennen, dass die ersten zwei Bytes der Datei „MZ“ lauten. NE- und PE-Dateien enthalten ein paar hundert Bytes nach dem Start den zusätzlichen Header, der an den zwei Zeichen „NE“ beziehungsweise „PE“ zu erkennen ist, einfacher lassen sie sich in den meisten Fällen jedoch durch den Text „This program cannot be run in DOS mode“ (bei NE-Dateien ist „Dieses Programm benötigt Microsoft Windows“ üblich) oder ähnlich ziemlich am Anfang identifizieren. Dabei handelt es sich um die Fehlermeldung, die angezeigt wird, wenn die Datei unter DOS aufgerufen wird. Unter DOS wird dabei der DOS-Teil der Datei ausgeführt, der bei den meisten Programmen nichts weiter als die Ausgabe dieser Fehlermeldung enthält, der so genannte „DOS-Stub“. Allerdings sind so auch vollständige Fat Binaries für DOS und Windows, d. h. mit einer vollen DOS-Version des Programms, erstellbar. Von dieser Möglichkeit wird aber kaum Gebrauch gemacht, anzutreffen war er noch eher bei Programmen, die für DOS und das 16-Bit-Windows entwickelt worden sind, wie die Datei „SETUP.EXE“ des Windows 3.1. Der Aufbau der New Executables und Portable Executables ist immer identisch, also zum Beispiel auch für entsprechende DLL-Dateien.

    quelle: http://de.wikipedia.org/wiki/EXE


    Wie genau soll ich das Programm denn neu schreiben?

    In einer anderen Programmiersprache die nicht von Microsoft stammt (.NET ist sowieso müll, wie eigentlich alles von Microsoft)

  • E-Technik ist nicht unbedingt Microprozessor... Kenne einige von dem Schlag die garnicht programmieren können.
    Pochie hier wurde einiges richtiges gesagt aber auch einiges an Mist geschreiben. Natürlich kan man unter Windows entwickeln und das dann unter Linux ausführen, das muss auch nicht unbedingt Probleme mit Bibliotheken geben und auch definitiv nicht immer neu geschrieben werden.

    Wenn du ein Programm kompilierst, dann tust du das für eine Architektur und für ein Betriebssystem. Es gibt einige Ausnahmen (z.B. Java Programme sind sozusagen abstrahiert und laufen überall wo es Java drauf gibt, solange man sich von ein paar Spezialsachen fern hält).
    Das einfachste ist natürlich in der Umgebung zu programmieren, in der du auch ausführen willst. Du kannst aber sogar VS beibringen, dass ein Linux-Executable rausfallen soll, frage mich aber bitte nicht wie, das hab ich das letzte Mal vor 7 Jahren benutzt als ich angefangen habe mit Programmieren.

    Am einfachsten wird es aber vermutlich tatsächlich sein (anfangs) deinen Quellcode auf deinen Pi zu kopieren und dort "ganz normal" zu kompileren.

    Als allererstes solltest du dir aber man ein Grundlagen Tutorial über Linux angucken, du kannst da am besten nach "Ubuntu" googlen für alles Linuxspezifische im Zusammenhang mit dem Pi (mit Raspberry).

    Wenn du dann wieder konkrete Fragen hast helfe zumindest ich dir gerne weiter. Aber wissen wie man eine "Konsole" öffnet (Achtung, das war ein Tipp :) ) solltest du dann schon.

    Christian

    Ps. zum Thema Elektrotechniker sollten Programmieren können und sich mit Linux auskennen... ich habbe einige Studienpartner in meinem Projekt letztes Jahr das waren System Engeneers, dieser Studiengang zeichnet sich dadurch aus, dass man E-Technik, Maschinenbau und Informatik zu gleichen Teilen macht. Und die meisten von denen konnten GARNICHTS von dem was ihr fordert, und das waren zu 1/3 Informatikstudenten! KEIN BISSCHEN Linux, KEIN BISSCHEN C/C++/Java, was sie eigentlich alles drei hätten bis dahin gelernt haben müssen.
    Also seid nicht soo streng mit E-Technikern

    Einmal editiert, zuletzt von Horroreyes (27. Januar 2014 um 10:12)

  • "Studienpartner" und "vordert" passt auch irgendwie nicht ....

    Viele Studenten können gar nix, nicht mal geradeaus pinkeln, daher hat das Thema Studieren nix mit alle dem hier zu tun.

    Ich bin kein Elektrotechniker, sondern nur Elektroniker, habe mir das Programmieren selbst beigebracht, nutze seit vielen Jahren Windows / Linux und habe nicht mal studiert.

    Mit viel Fleiß und Interesse kann man viel selbst herausfinden und lernen, es zählt halt der Wille (oder das richtige Studium).

    ;) Gruß Outi :D
    Pis: 2x Pi B (Rente) / 1x Pi B+ (Rente) / 1x Pi 2 B (Rente) / 2x Pi 3 B (RaspberryMatic / Repetier Server) / 2x Pi Zero 1.2 (B. Lite) / 2x Pi Zero 1.3 (B. Lite) / 2x Pi Zero W 1.1 (B. Lite) / 1x Pi Zero 2 (mal so, mal so) / 1x Pi 3 B+ (Tests) / 1x Pi 4 B 4GB (BW Lite (Webserver)) / Pi 400 (BW) / 1x Pi 5 (BW) / 2x Pi Pico / 2x Pi Pico W
    Platinen: Sense HAT / HM-MOD-RPI-PCB / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT / Pi 5 Kühler HAT
    Kameras: orig. Raspberry Pi Camera Module V1 & V3 / PS3 Eye


  • Am einfachsten wird es aber vermutlich tatsächlich sein (anfangs) deinen Quellcode auf deinen Pi zu kopieren und dort "ganz normal" zu kompileren.

    Sorry, aber das ist doch Blödsinn - zumindest was den bereits vorhandenen Quellcode für den XBOX-Controller angeht. Das wird hinten und vorne nicht funktionieren und den Grund dafür habe ich bereits genannt :shy:

    Aber sich mit dem RPi und Linux erst einmal auseinandersetzen, bevor man .exe-Dateien darauf ausführen will ist eine gute Idee.

    Und zum Thema Student: Selbst wenn man ein Erstsemestler-Elektrotechnik Student ist und bisher nur BWL-Vorlesungen besucht hat, sollte man trotzdem in der Lage sein, solch primitive Dinge zu recherchieren - dank Google kann sowas heute jeder 10-Jährige. Geht zudem auch schneller, als einen Forenbeitrag hinzuklatschen ;)

    Zitat


    Viele Studenten können gar nix, nicht mal geradeaus pinkeln


    Das bekomm ich hin :D Mal im Ernst: Dieses Studenten-Bashing bringt doch keinen weiter, vor allem trifft es auf die allermeisten Studenten nicht zu. Die Elektrotechniker, mit denen ich bereits gemeinsame Kurse besucht hab, waren sehr wohl in der Lage zu programmieren und hatten auch eine hohe Technik-Affinität (wer hätte das bei diesem Studiengang gedacht?). Und selbst die BWLer (das muss sein! :P) können mittlerweile Google bedienen. Aber es geht ja auch nicht darum, dass der TE nicht programmieren kann, sondern sich schlicht und ergreifend nicht mir Linux auskennt - dieses Problem lässt sich aber auch abseits eines Studiums bewältigen.

  • Danke für die Tipps, Christian.

    Ich habe schon 2 µProzessoren im Studium programmiert, das war zum einen das DE0 von altera und zum anderen ein ATMEL-µC. Ein kleines Programm für ne SPS haben wir auch programmiert, hatten aber leider nie die Hardware das auszuprobieren. Ausserdem haben wir auch CAN-Bus programmiert...
    Wir haben jedenfalls auch Java (meine Lieblingssprache) und C gelernt, C++ habe ich dann selber genutzt weils mir besser gefällt (ist ähnlicher wie Java). Haben sogar ein bisschen Assembler gelernt.. Bei der Systemtheorie in den Vorlesungen hab ich aber immer gepennt, weils mich so garnicht interessiert hat... Naja, hätte ich aufgepasst müsste ich jetzt nicht hier fragen, aber der Großteil von euch ist ja wirklich sehr hilfsbereit, vielen Dank dafür!
    Jedenfalls habe ich bei allen o.g. Systemen Windows genutzt um zu programmieren. Zu allen Umgebungseinrichtungen gabs komfortablerweise Tutorials, daher brauchte ich auch nichts großartiges über die Systemtheorie zu verstehen.

  • Ich habe auch nicht Studenten gebasht, ich habe deutlich machen wollen, das man von dem Studiengang nicht unbedingt auf solche Kenntnisse schließen kann... Teilweise nichteinmal wenn es eigentlich Inhalt ist, was dann aber tatsächlich nicht ok ist :-/

    Was google angeht: Man muss eine Grundkentnis des Themas haben um sinnvoll googlen zu können.
    Und du schienst das auch nciht ganz raus zu haben, XBOX-Controller funktionieren mit dem Pi durchaus:
    http://forum.stmlabs.com/showthread.php?tid=886
    Und wenn du dir den verlinkten Thread durchließt war mein Vorschlag das auf de Pi zu kompilieren vielleicht doch keine soo blöde Idee!? Sicherlich nicht unangepasst.

  • Horroreyes: Das mit dem Bashing bezog sich primär auf den von mir zitierten User-Beitrag. Damit warst also nicht du gemeint ;)

    Es mag ja sein, dass jemand einen Treiber für den XBOX-Controller für ARM-Linux entwickelt hat - das ist ja auch erst einmal gut und nimmt einem Arbeit ab, wenn man damit am Pi arbeiten will. Das ändert aber nichts an der Geschichte mit der API, die der TE von Microsoft verwendet. XInput als Teil von Direct-X, das nunmal essenziell für die Verwendung des bereits vorhandenen Quellcodes ist, wird damit nämlich nicht 1:1 für Linux abgebildet. Man kann aber durchaus auf der Basis deines verlinkten Treibers arbeiten am Pi, aber mit Copy&Paste wird das sicher nichts werden. Dem TE hier falsche Hoffnungen zu machen, löst das Problem sicher auch nicht...

    Aber gerne kann man das mit Copy&Paste versuchen, ich hindere niemand daran. Aus Fehlern lernt man ja schließlich ;)
    Ach ja: Man muss es nicht zwingend auf dem Pi kompilieren...Stichwort: Cross-Compiler

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!