Mono auf Raspberry Pi [geschlossen]

78

Ich habe viel über das Ausführen von Mono / .NET-Code auf dem Raspberry Pi gesprochen . Hat es Erfolg gehabt, tatsächlich Mono-Code auf einem Raspberry Pi auszuführen?

Auf ihrer Website listen sie mehrere Linux-Distributionen auf, die auf dem Gerät funktionieren, und einige dieser Distributionen enthalten Mono. Es gibt jedoch keine Einzelheiten darüber, ob Mono daran arbeitet.

Gibt es eine funktionierende Implementierung?

AngryHacker
quelle
2
mögliches Duplikat von MonoDevelop ARMv6 Raspberry PI
Skolima
20
Diese Frage bezieht sich eher auf MonoDevelop (die IDE) als auf die Laufzeit. Ich denke, dies wird zuerst von Entwicklern getroffen, die Mono auf dem Raspberry Pi verwenden möchten, nicht auf dem anderen.
Ani
Ich bin damit einverstanden, dass das Ausführen von Mono ganz anders ist als das Ausführen von MonoDevelop. Dies ist eine legitime separate Frage.
Joe Strout
Ich konnte den WCF-Dienst mit der auf Pi installierten EntityFramework-verbrauchenden MySQL-Datenbank ausführen. Es war nur ein Testprojekt, aber die Leistung war gut.
Vpetrovic

Antworten:

32

Ich habe es geschafft, meinen Delta Forth .NET- Compiler unter Debian 6.0 (Squeeze) und Mono auszuführen . Es funktionierte einwandfrei mit voller Binärkompatibilität. Das einzige, was ich tun musste, war, den Code neu zu kompilieren, um auf .NET 3.5 (anstelle von 4.0) abzuzielen, da Mono unter Debian in Bezug auf .NET-Versionen etwas hinterherhinkt.

Der Compiler ist keine triviale .NET-Anwendung, daher war ich froh, den Compiler auf meinem winzigen Raspberry Pi tatsächlich in Aktion zu sehen.

Die tatsächlichen Schritte, die ich unternommen habe, um die Magie zu verwirklichen, waren (ich erinnere mich aus dem Gedächtnis):

  • Installieren Sie die Mono-Laufzeit mit: sudo apt-get install mono
  • Rufen Sie den Compiler selbst auf mit: mono DeltaForth.exe file_to_compile.4th

Das ist alles. Der schwierigste Teil dieses Vorhabens war es, die Dateien von meinem Windows-Computer mit einem Flash-Laufwerk auf Raspberry Pi zu übertragen :-)

vbocan
quelle
9
'sudo apt-get install mono' hat bei mir nicht funktioniert. Ich habe 'sudo apt-get install mono-complete' verwendet. Es scheint bisher zu funktionieren!
Kodybrown
2
Randnotiz für diejenigen, die kompilieren möchten. Ich musste 'mcs sample.cs' verwenden, um meinen Code auf der Raspi zu kompilieren, und 'mono sample.exe', um ihn auszuführen. Es funktioniert, also bin ich total aufgeregt, in der Lage zu sein um c # auf meinem pi zu programmieren :-D
kodybrown
2
@wasatchwizard - es ist nicht "mono", sondern "mono-runtime", das "mono-complete" funktioniert auch, aber es ist VIEL größer und JEDER Teil von mono, so dass Sie viele zusätzliche Bibliotheken erhalten. Wenn Sie versuchen, einen kleinen Footprint zu erstellen, ist dieses Paket nicht die Lösung - aber ich bevorzuge es auch, obwohl die Installation ewig dauert.
BerggreenDK
3
@vbocan - Ich mounte einfach ein CIFS-Netzwerklaufwerk auf meinem PC / LAN und kompiliere dann mit monoDeveloper die mono.exe-Dateien mit voller Geschwindigkeit auf einem modernen PC (Intel Core i7). Wenn die Binärdatei fertig ist, führt sie sie einfach über LAN auf dem Raspberry PI aus. Das wirkt wie ein Zauber! und kompilieren ist ein Kinderspiel.
BerggreenDK
4
SCPen Sie Ihre Dateien beim nächsten Mal stattdessen mit einem Flash-Laufwerk auf Ihren Raspberry Pi. Unter Windows können Sie dafür WinSCP verwenden.
Tom van Zummeren
21

Die Leute auf dem Raspberri Pi-Board berichten, dass Mono tatsächlich funktioniert , zumindest für einfache Anwendungen.

AngryHacker
quelle
aber mit Fehlern im Moment, da DateTime nicht wie erwartet funktioniert, wenn String-Formatierung verwendet wird
BerggreenDK
Es ist nicht nur die String-Formatierung von DateTime. Die Probleme sind leider tief und allgegenwärtig. Siehe den Fehlerbericht ( bugzilla.xamarin.com/show_bug.cgi?id=7938 ) und die anderen, die mit diesem verknüpft sind.
Joe Strout
DateTime-Probleme klingen nach Soft / Hard-Float-Problemen. Sie benötigen eine Soft-Float-Distribution für Mono 2. Sie können eine Hard-Float-Distribution verwenden, wenn Sie Mono 3 verwenden (möglicherweise müssen Sie Mono selbst kompilieren, was nicht so schwer ist).
Fiat
19

Mono auf dem Raspberry Pi ist möglich und relativ einfach einzurichten. Im Folgenden wird davon ausgegangen, dass Sie Debian verwenden. Dies stammt aus meinem Blog , der eine Reihe von Raspberry Pi-Tutorials bietet

Ein Hinweis: Die derzeit verfügbare Standard-Mono-Laufzeit unterstützt nur .NET 3.5, sofern Sie nicht selbst aus dem Quellcode kompilieren.

Sie möchten also einige Anwendungen für Ihren Raspberry Pi entwickeln, aber Ihre Programmierkenntnisse beschränken sich auf die modernen .NET-Sprachen wie VB.NET und C # . Kein Problem!! Willkommen in der Welt von Mono, einer plattformübergreifenden und kompatiblen Open Source-Version des .NET-Frameworks. Mit einer Entwicklungs-IDE wie Visual Studio oder noch besser MonoDevelop können Sie EXE-Dateien erstellen, die auf Ihrem Raspberry Pi ausgeführt werden. Sie müssen lediglich die Mono-Laufzeiten auf dem Raspberry Pi installieren. Dazu geben wir folgende Zeilen ein.

sudo apt-get update

sudo apt-get install mono-runtime

Wie in anderen Tutorials erwähnt, wird in der ersten Zeile der APT-GET-Paketmanager aktualisiert, um sicherzustellen, dass die neuesten Quellen zum Herunterladen Ihrer Pakete verwendet werden. Die zweite Zeile installiert und bereitet die Laufzeiten für die Verwendung vor. Jetzt können Sie eine von Mono entwickelte EXE-Datei ausführen. Stellen Sie dem Befehl einfach das folgende Wort monovoran.

mono myprogram.exe 
S_BatMan
quelle
Wie würden Sie die Leistung der Mono-Apps auf der Himbeere charakterisieren? Würden Sie sagen, es ist gut genug für reale Anwendungen (wie z. B. ein eingebettetes Gerät oder ein Echtzeitverarbeitungsgerät)?
AngryHacker
@AngryHacker Insgesamt würde ich gut für seinen Preis sagen. Es ist kein super stabiler Mikrocontroller, dem man für daten- / zeitkritische Operationen vertrauen sollte. und es kann die Kraft fehlen, weil seine Teile (Preis) für alles Wesentliche verwendet werden können, aber als Testbasis / Framework oder als anfängliches Prototyping-Framework ist es fantastisch. Es wurde entwickelt, um zu lehren, und seine Hardware spiegelt dies wider. Für den Feldeinsatz sind andere Optionen besser.
S_BatMan
Kann ich mit MonoDevelop unter Windows 7 meine Anwendung entwickeln / kompilieren / testen und anschließend auf meinen Raspberry PI übertragen, oder muss ich die Quelldateien verschieben und direkt auf dem Gerät kompilieren? Ich dachte daran, Dateien über LAN zu übertragen ... machen Sie einfach den Ordner bin im LAN öffentlich ..
BerggreenDK
Ehrlich gesagt ist es nicht etwas, was ich versucht habe, aber aufgrund der Natur für die JIT sollte dies ja durchaus möglich sein. Unter der Annahme, dass keine Funktionen verwendet werden, die in der Mono-Version auf dem Pi nicht verfügbar sind, sollten Sie in der Lage sein, eine Mono-Exe
auszuführen
5

Die Unterstützung für Hard Float ist jetzt in Mono 3.2.7 verfügbar:
http://www.raspberrypi.org/phpBB3/viewtopic.php?t=62496&p=468500

Die neueste Quelle kann von git installiert werden. Es sollte ungefähr so ​​aussehen:
(vorherige Mono-Installationen zuerst entfernen)

sudo apt-get update
sudo apt-get install git build-essential automake autoconf libtool gettext
git clone git://github.com/mono/mono.git
cd mono
./autogen.sh --prefix=/usr/local
make get-monolite-latest
make EXTERNAL_MCS="${PWD}/mcs/class/lib/monolite/gmcs.exe"
sudo make install

So sieht "mono-V" auf meiner Himbeere aus:

Mono JIT compiler version 3.4.0 (master/ae165c5 Thu Mar 13 01:20:37 UTC 2014)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
    TLS:           __thread
    SIGSEGV:       normal
    Notifications: epoll
    Architecture:  armel,vfp+hard
    Disabled:      none
    Misc:          softdebug
    LLVM:          supported, not enabled.
    GC:            sgen

Ein schneller Test scheint gut zu funktionieren:

csharp> Math.Pow(2,4);
16
r03
quelle
4

Auf meinem Raspberry Pi mit dem Fedora 18-Remix brauchte ich nur:

    # yum -y install mono-devel

Überprüfen:

    # csharp
    Mono C# Shell, type "help;" for help
    Enter statements below.
    csharp> Console.WriteLine("Hello, I am PI");
    Hello, I am PI
    csharp>  

quelle
6
Sie sollten Ihrem Scheck Folgendes hinzufügen: "Math.Pow (2,4);". Wenn dies 16 ergibt, bist du gut. Wenn es Müll zurückgibt, sind Sie in Mono auf ARM Linux-Distributionen, die das Hard-Float-ABI verwenden, auf den Fehler gestoßen.
Joe Strout
1

Sie können die x86-Version von Mono auf Raspberry Pi mit der ExaGear Desktop- Software ausführen .

Es ermöglicht die Ausführung fast aller x86-Apps und sogar die Installation von Wine zum Ausführen von Windows-Apps.

Sie sagen, dass Firefox schneller funktioniert als sogar native ...

vadik_lyutiy
quelle