Raspberry Pi 上的 Mono [关闭]

Posted

技术标签:

【中文标题】Raspberry Pi 上的 Mono [关闭]【英文标题】:Mono on Raspberry Pi [closed] 【发布时间】:2012-04-30 02:42:48 【问题描述】:

我见过a lot of talk about running Mono/.NET code on the Raspberry Pi。在 Raspberry Pi 上实际运行任何 Mono 代码是否成功?

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

有有效的实现吗?

【问题讨论】:

MonoDevelop ARMv6 Raspberry PI的可能重复 这个问题是关于 MonoDevelop(IDE)而不是运行时,我认为这将首先受到希望在 Raspberry Pi 上使用 Mono 而不是其他的开发人员的影响。 我同意,运行单声道与运行 MonoDevelop 完全不同。这是一个合法的单独问题。 我能够使用安装在 Pi 上的使用 mysql 数据库的 EntityFramework 运行 WCF 服务。这只是一个测试项目,但性能很好。 【参考方案1】:

我已经成功地在 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 :-)

【讨论】:

'sudo apt-get install mono' 对我不起作用。我使用了 'sudo apt-get install mono-complete'.. 到目前为止它似乎有效! 对于那些想要编译的人的旁注。我不得不使用'mcs sample.cs'在raspi上编译我的代码,并使用'mono sample.exe'来运行它。它可以工作,所以我很高兴能够在我的 pi 上编写 c# :-D @wasatchwizard - 它不是“mono”而是“mono-runtime”,“mono-complete”也可以工作,但它要大得多,而且是 mono 的每个部分,所以你会得到很多额外的图书馆。如果您想构建一个小空间,那么该软件包不是解决方案 - 但我也更喜欢它,尽管它需要很长时间才能安装。 @vbocan - 我只是将 CIFS 网络驱动器安装到我的 PC/LAN 上,然后使用 MonoDeveloper 在现代 PC(英特尔酷睿 i7)上全速编译 mono.exe 文件。然后,当二进制文件完成后,它只是在 Raspberry PI 上通过 LAN 执行它......就像一个魅力!编译轻而易举。 下一次,将您的文件 SCP 到您的 Raspberry pi,而不是使用闪存驱动器。在 Windows 上,您可以使用 WinSCP。【参考方案2】:

Raspberri Pi 板上的人是 reporting that Mono does indeed work,至少对于简单的应用程序而言。

【讨论】:

但目前存在错误,因为使用字符串格式化时 DateTime 无法按预期工作 不仅仅是 DateTime 的字符串格式。唉,这些问题是深刻而普遍的。请参阅错误报告 (bugzilla.xamarin.com/show_bug.cgi?id=7938) 以及与该报告相关的其他报告。 DateTime 问题听起来像是软/硬浮动问题。你需要一个用于单声道 2 的软浮点发行版。如果你使用单声道 3,你可以使用硬浮点发行版(你可能需要自己编译单声道,这并不难)。【参考方案3】:

Raspberry Pi 上的 Mono 是可能的,而且设置起来相当容易。以下假设您使用的是 Debian。这取自 my blog,它提供了许多 Raspberry Pi 教程

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

因此,您想开始为您的 Raspberry Pi 开发一些应用程序,但您的编程知识仅限于现代 .NET 语言,例如 VB.NET 和 C#。没问题!! 欢迎来到 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 上单声道应用程序的性能?你会说,它对于现实世界的应用程序(比如嵌入式设备或实时处理设备)来说已经足够了吗? @AngryHacker 总的来说,我会说它的价格很好。它不是一个超级稳定的微控制器,对于数据/时间关键型操作应该值得信赖。并且它可能由于其部件(价格)而缺乏用于任何实质性的功能,但作为测试基础/框架,或作为初始原型框架,它非常棒。它旨在教学,其硬件反映了这一点。对于现场使用,其他选项会更好。 我可以在 Windows 7 上使用 MonoDevelop 开发/编译/测试我的应用程序,然后将其传输到我的 Raspberry PI,还是需要移动源文件并直接在设备上编译?我正在考虑通过 LAN 传输文件...只需在 LAN 上公开 bin 文件夹.. 老实说,这不是我尝试过的东西,但是由于 JIT 的性质,所以是的,这应该是完全可能的。事实上,假设它不使用任何在 pi 上的单声道版本中不可用的功能,你应该能够运行任何单声道 exe【参考方案4】:

是的。我已经成功运行了基于 Mono 的 Winforms 和 Webforms 应用程序 (XSP)。我的博客中提供了详细的操作方法

http://www.amazedsaint.com/2013/04/hack-raspberry-pi-how-to-build.html

【讨论】:

【参考方案5】:

单声道 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

【讨论】:

【参考方案6】:

在运行 Fedora 18 remix 的 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>  

【讨论】:

您应该在支票中添加:“Math.Pow(2,4);”。如果这返回 16,那么你很好。如果它返回垃圾,那么您在使用硬浮点 ABI 的 ARM Linux 发行版上遇到了 Mono 中的错误。【参考方案7】:

我能够在树莓派 (debian) 上运行我的 .NET exe。

安装单声道 - http://logicalgenetics.com/raspberry-pi-and-mono-hello-world/

然后以mono something.exe 运行你的exe

【讨论】:

【参考方案8】:

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

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

他们说 Firefox 的运行速度甚至比本机还要快……

【讨论】:

以上是关于Raspberry Pi 上的 Mono [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Raspberry Pi 上的 ssh 连接被拒绝 [关闭]

sh 启用和禁用Raspberry Pi上的HDMI端口:`rpi-hdmi on`打开,`rpi-hdmi off`关闭。 X正确地重新初始化了

OpenCV VideoCapture 在 Raspberry Pi 2 上总是失败

.NET Core 准备好在 Raspberry PI 3 上运行了吗?

使用python3在Raspberry Pi上打开和关闭Tkinter GUI

sh 修复了Raspberry Pi上的慢速鼠标