【问题标题】:Mono on Raspberry Pi [closed]Raspberry Pi 上的 Mono [关闭]
【发布时间】: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(IDE)而不是运行时,我认为这将首先受到希望在 Raspberry Pi 上使用 Mono 而不是其他的开发人员的影响。
  • 我同意,运行单声道与运行 MonoDevelop 完全不同。这是一个合法的单独问题。
  • 我能够使用安装在 Pi 上的使用 MySql 数据库的 EntityFramework 运行 WCF 服务。这只是一个测试项目,但性能很好。

标签: .net linux mono arm raspberry-pi


【解决方案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.NETC#。没问题!! 欢迎来到 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 的运行速度甚至比本机还要快……

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-04-20
          • 1970-01-01
          • 2015-08-24
          • 2017-12-10
          • 2014-10-24
          • 2012-01-21
          • 1970-01-01
          相关资源
          最近更新 更多