Raspberry Pi上的Mono


78

我已经看到很多关于在Raspberry Pi上运行Mono / .NET代码的讨论。在Raspberry Pi上实际运行任何Mono代码是否成功?

他们在其站点上列出了可在该设备上运行的几个Linux发行版,其中一些发行版包括Mono。但是,没有一个细节说明Mono是否适用于此。

有可行的实施方案吗?



20
这个问题是关于MonoDevelop(IDE)的,而不是关于运行时的,我认为这将首先受到希望在Raspberry Pi上使用Mono而不是其他人使用Mono的开发人员的关注。
阿妮2012年

我同意,运行Mono与运行MonoDevelop完全不同。这是一个合理的单独问题。
乔·斯特鲁

我能够使用Pi上安装的消耗MySql数据库的EntityFramework运行WCF服务。这只是一个测试项目,但性能很好。
vpetrovic

Answers:


32

我设法在Debian 6.0(Squeeze)和Mono上运行了Delta Forth .NET编译器。它具有完全的二进制兼容性,可以完美地工作,我唯一要做的就是将代码重新编译为目标.NET 3.5(而不是4.0),因为Debian上的Mono在.NET版本方面有些滞后。

该编译器不是一个普通的.NET应用程序,因此我很高兴能在我的小型Raspberry Pi上看到实际使用的编译器。

我为实现魔术而采取的实际步骤是(我从记忆中回忆起):

  • 使用以下命令安装Mono运行时:sudo apt-get install mono
  • 使用以下命令调用编译器本身:mono DeltaForth.exe file_to_compile.4th

就这些。这项工作中最具挑战性的部分是使用闪存驱动器将文件从Windows计算机传输到Raspberry Pi :-)


9
'sudo apt-get install mono'对我不起作用。我用了'sudo apt-get install mono-complete'..看来到目前为止!
kodybrown 2012年

2
对于那些希望进行编译的人来说,是要注意的事情。.我不得不使用“ mcs sample.cs”在raspi上编译我的代码,并使用“ mono sample.exe”来运行它。在我的pi上编程c#:
D

2
@wasatchwizard-它不是“ mono”,而是“ mono-runtime”,“ mono-complete”也可以工作,但是它的大小更大且Mono的每个部分,因此您会得到很多额外的库。如果您试图建立一个很小的占用空间,那么该软件包不是解决方案-尽管安装需要花费很多时间,但我还是更喜欢它。
BerggreenDK

3
@vbocan-我只是将CIFS网络驱动器安装到我的PC / LAN上,然后使用MonoDeveloper在现代PC(英特尔酷睿i7)上全速编译mono.exe文件。然后,完成二进制文件后,只需在Raspberry PI的LAN上执行它即可。编译很容易。
BerggreenDK

4
下次,请使用闪存将SCP的文件保存到Raspberry pi。在Windows上,您可以使用WinSCP。
Tom van Zummeren

21

Raspberri Pi板上的人报告说Mono确实可以工作,至少对于简单的应用而言。


但目前存在错误,因为使用字符串格式设置时DateTime无法按预期工作
BerggreenDK

不只是DateTime的字符串格式。are,这些问题是深刻而普遍的。请参阅错误报告(bugzilla.xamarin.com/show_bug.cgi?id=7938)和其他链接到该报告的报告。
乔·斯特鲁

日期时间问题听起来像是软/硬浮动问题。对于单声道2,您需要一个软浮动发行版。如果使用单声道3,则可以使用一个硬浮动发行版(您可能需要自己编译单声道,这并不难)。
2014年

19

Raspberry Pi上的Mono是可能的,并且相当容易设置。以下假设您使用的是Debian。这取自我的博客,该博客提供了许多Raspberry Pi教程

注意:当前可用的标准Mono运行时仅最多支持.NET 3.5,除非您自己从源代码进行编译。

因此,您想开始为Raspberry Pi开发一些应用程序,但您的编程知识仅限于现代.NET语言,例如VB.NETC#。没问题!!欢迎来到Mono的世界,Mono是.NET框架的开源跨平台和兼容版本。通过使用Visual Studio等开发IDE,甚至更好的MonoDevelop,您可以生成将在Raspberry Pi上运行的EXE文件。您需要做的就是在Raspberry Pi上安装Mono的运行时间。为此,我们输入以下几行。

sudo apt-get update

sudo apt-get install mono-runtime

如其他教程中所述,第一行用于更新APT-GET软件包管理器,以确保它使用最新的资源来下载软件包。第二行安装并准备运行时以供使用。就是这样,现在运行Mono开发的EXE文件。只需在命令mono前面加上单词即可,如下所示。

mono myprogram.exe 

您如何表征Raspberry上Mono应用程序的性能?您会说这对于现实世界的应用程序(例如嵌入式设备或实时处理设备)已经足够了吗?
AngryHacker 2012年

@AngryHacker总的来说,我愿意为它的价格好。它不是一个非常稳定的微控制器,对于数据/时间关键型操作应该值得信赖。由于它的零件(价格)可能无法用于任何实质性的事情,因此它可能会缺乏功能,但是作为测试基础/框架,或者作为初始原型框架,其效果非凡。它的教学设计及其硬件反映了这一点。对于现场使用,其他选择会更好。
S_BatMan

我可以在Windows 7上使用MonoDevelop开发/编译/测试我的应用程序,然后再将其传输到我的Raspberry PI上,还是需要移动源文件并直接在设备上进行编译?我当时正在考虑通过LAN传输文件...只是将bin文件夹在LAN上公开..
BerggreenDK

老实说,这不是我尝试过的事情,但是由于JIT的本质,那么应该完全可以做到。实际上,假设它没有使用pi上的mono版本不具备的任何功能,则您应该能够运行任何mono exe
S_BatMan 2013年


5

硬浮动支持现已在mono 3.2.7中提供:http ://www.raspberrypi.org/phpBB3/viewtopic.php?t = 62496&p = 468500

可以从git安装最新的源代码。应该是这样的:(
首先删除以前的单声道安装)

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

这是我的树莓上“ mono -V”的样子:

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

快速测试似乎可以正常工作:

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

4

在运行Fedora 18混音的Raspberry Pi上,我需要做的是:

    # yum -y install mono-devel

去检查:

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

6
您应该在检查中添加“ Math.Pow(2,4);”。如果返回16,则表示您感觉很好。如果它返回垃圾,则说明您已经在使用硬浮动ABI的ARM Linux发行版上遇到了Mono中的错误。
Joe Strout


1

您可以使用ExaGear Desktop软件在Raspberry Pi上运行x86版本的Mono 。

它允许运行几乎所有x86应用程序,甚至可以安装Wine来运行Windows应用程序。

他们说Firefox的运行速度甚至比本机...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.