最近公司有项目想要在树莓派上做,代替原来的工控机(我们是把工控主机当作小的主机用,一台小的工控主机最少也要600左右,而树莓派只要200多)。于是,公司买了一个Raspberry Pi B+和一个Raspberry Pi 2 B,并要求能在B+上做就尽量用B+,原因很简单,B+比Raspberry Pi 2要便宜70左右。拿到闻名已久的树莓派之后很是兴奋,试着从官网下载了官方推荐的镜像raspbian,用Win32DiskImager烧录到SD卡上,然后上电,起初屏幕上什么都没显示,不管重新烧写了多少次SD卡,屏幕都是黑的,后来发现原来屏幕是否显示,是需要配置一下config.txt文件里面的一些参数屏幕才会显示,我用的是HDMI接显示器,所以只要把config.txt里面跟HDMI有关的选项前面的#去掉就可以了。剩下的就比较简单了,配置一下就可以用了,初始登录用户是pi。
  本人用的比较熟的语言是C#,树莓派上能用吗?答案是肯定的,Mono 4是支持ARM设备的,这就意味着树莓派可以用C#写程序,但问题来了,怎么安装Mono 4呢?如果你用官方的镜像raspbian-wheezy,你会发现,通过apt-get怎么都装不上Mono 4,显示缺少依赖项。于是,我想到有没有其他可以用的镜像,是不是镜像的问题,wheezy是debian的上一个版本,debian当前的版本是jessie,那么jessie(下载地址http://sjoerd.luon.net/posts/2015/02/debian-jessie-on-rpi2/)可以在树莓派上用吗?答案是可以,但是仅限于Raspberry Pi 2,因为jessie的ARM版系统是基于ARMv7的,Raspberry Pi 2是ARMv7的芯片,但是上一代的树莓派都是ARMv6的芯片。我试了一下,在jessie的系统里可以很轻松地安装Mono 4,不过B+的板子要怎么安装Mono 4呢?看到jessie上可以安装Mono 4,我想到了是不是找不到软件源,既然raspbian是基于wheezy的,那我把wheezy的debian官方源加上试试,结果,两个都不行。jessie确实可以装啊,于是我就直接把jessie的软件源加上了,结果是Raspberry Pi 2在raspbian上添加jessie源就可以顺利的安装Mono 4,而B+还是不行,原因很简单,Mono 4是支持ARM设备,但官方的软件源只支持ARMv7架构,如果要想在B+上用,就只剩下一条路了,直接在树莓派上编译源码,Mono官方有教程,这里简单的贴一下代码:

wget http://download.mono-project.com/sources/mono/mono-4.0.1.44.tar.bz2
下载官方源码包
tar -xvf mono-4.0.1.44.tar.bz2
解压
cd mono-4.0.
切换路径
./configure --prefix=/usr/local
配置编译安装路径
make
编译
make install
安装

  这里虽然只有几行命令,但是中间的过程是极其缓慢的,B+编译安装完要8个小时,Raspberry Pi 2要3个小时……
  看到这个极其缓慢的过程,我肯定是不想再来第二回的,所以,我很想把它们做成安装包,以后要用就直接安装一下就可以了,不用漫长的编译过程,找了很多办法,走了很多弯路……很多弯路……真的很多弯路……
  ……
  终于让我找到了一个可以比较简单的制作安装包的方法,就是用checkinstall,这是一个工具,需要提前用apt-get安装,于是上面的代码需要修改一下:

wget http://download.mono-project.com/sources/mono/mono-4.0.1.44.tar.bz2
下载官方源码包
tar -xvf mono-4.0.1.44.tar.bz2
解压
cd mono-4.0.
切换路径
./configure --prefix=/usr/local
配置编译安装路径
make
编译
checkinstall
将编译后的文件制作成deb安装包,制作过程中有一些参数要设置,不想费神的话,就直接用默认值吧。

  折腾了两天,终于达到了自己的目的,暮然回首,我的周末,我的六一,哎,这就是程序猿啊……
  最后,说一个小技巧,如果你也想不开要在树莓派上编译软件,而且经过漫长的等待也编译好了,但是突然不知道下一步该怎么办了,请注意,一定要把你当前的SD卡烧录到IMG文件里,不管你以后想怎么做,直接烧写一遍SD卡就行了,不用再经历漫长的等待,这可是血的教训!
  最后的最后当然是做点好事,把我编译好的安装包分享出来,亲测可用哦!
  ARMv6(B+) : http://yunpan.cn/cw6NYzXkD9kHq 访问密码 63ae
  ARMv7(Raspberry Pi 2) : http://yunpan.cn/cw6NMKUztiSDu 访问密码 4efb

  (PS:我测试Mono是否正常运行是用的Jexus,如果能正常运行Jexus就认为是可以了,刚开始弄出了一版,mono -V有反应,csharp指令也可以用,但是因为编译路径问题,Jexus运行不了,于是折腾很久,最终可以正常运行Jexus了,Jexus怎么用我就不说了,宇内大神做的很简洁,直接看官网就可以了,http://www.jexus.org/)

让Mono 4在Raspberry Pi上飞的更多相关文章

  1. live555在Raspberry Pi上的点播/直播

    1.live555在Raspberry Pi上的点播 live555MediaServer这个实例是个简单的服务器,支持多媒体点播,直接在Raspberry Pi上编译运行,或者通过交叉编译出ARM核 ...

  2. 在Raspberry Pi上安装XBMC

    2013-05-22 XBMC is a free and open source media player application developed by the XBMC Foundation, ...

  3. 在Raspberry Pi上创建容器

    树莓派Raspbian默认是支持LXC容器的,下面我们介绍一下在树莓派上创建并运行容器的过程. 1. 安装LXC相关的package $ sudo apt-get install -y git lxc ...

  4. 在树莓派(Raspberry Pi)上编译安装更新版本的Python

    Raspiban Wheezy上预装的Python3版本是3.2.3,本文将介绍升级到3.4.3的方法. 此文也适用于安装其它版本(比如最新版本)的Python. 我用的是B+型的树莓派,装的系统是2 ...

  5. 在Archlinux ARM - Raspberry Pi上安装Google coder

    升级软件包 一个 pacman 命令就可以升级整个系统.花费的时间取决于系统有多老.这个命令会同步非本地(local)软件仓库并升级系统的软件包: # pacman -Syu 提示:确保make以及g ...

  6. Raspberry Pi 上使用WN725N连接WIFI

    系统版本 lee@Lee-RPi ~ $ uname -ar Linux Lee-RPi + # PREEMPT Thu Dec :: GMT armv6l GNU/Linux 这个版本的系统,已经集 ...

  7. 42 在Raspberry Pi上安装dlib表情识别

    https://www.jianshu.com/p/848014d8dea9 https://www.pyimagesearch.com/2017/05/01/install-dlib-raspber ...

  8. 2019 年在 Raspberry Pi 「树莓派」上运行的 10 个操作系统推荐

    原文:2019 年在 Raspberry Pi 「树莓派」上运行的 10 个操作系统推荐 image Raspberry Pi** 是一款基于 ARM 的单板计算机,默认运行一款称为 Raspbian ...

  9. [转]Raspberry Pi做成路由器

    http://raspjason.blog.51cto.com/8565009/1426561/ 曾经看到很多文章把Raspberry Pi制作成无线AP,但是我今天要做的是把Raspberry Pi ...

随机推荐

  1. SQL Server 大数据搬迁之文件组备份还原实战

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) ...

  2. nodejs进阶(4)—读取图片到页面

    我们先实现从指定路径读取图片然后输出到页面的功能. 先准备一张图片imgs/dog.jpg. file.js里面继续添加readImg方法,在这里注意读写的时候都需要声明'binary'.(file. ...

  3. premere cs4绿色版 安装 并且 视频导出 讲解

    最近室友,开始在玩视频剪辑,用的是 premere cs4 绿色版.让他遇到的最大问题也是我之前遇到的最大问题,就是视频导出. 所以我在这里上传一套自己的一点点经验吧. 接下来,我就总结一下 我是怎么 ...

  4. 【WCF】自定义错误处理(IErrorHandler接口的用法)

    当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...

  5. UWP开发之Template10实践:本地文件与照相机文件操作的MVVM实例(图文付原代码)

    前面[UWP开发之Mvvmlight实践五:SuspensionManager中断挂起以及复原处理]章节已经提到过Template10,为了认识MvvmLight的区别特做了此实例. 原代码地址:ht ...

  6. 搭建属于自己的VIP积分系统(1)

    很久没写博客了,如果有写得不好的地方,还请多多见谅. 架构设计 需求分析 这篇文章主要是介绍此VIP系统的基础架构.说实在的,我其实对 架构方面也不是很懂,我这套框架 还是拿别人的东西改过来的,并不是 ...

  7. ADO.NET编程之美----数据访问方式(面向连接与面向无连接)

    最近,在学习ADO.NET时,其中提到了数据访问方式:面向连接与面向无连接.于是,百度了一下,发现并没有很好的资料,然而,在学校图书馆中发现一本好书(<ASP.NET MVC5 网站开发之美&g ...

  8. Mysql - 数据库操作

    之前介绍了数据库的增删改查, 发现忘记了数据库的一些基本操作, 比如建库, 建表, 改表等等. 那这里就来小结一下数据库sql形式的基本操作. 一.库操作 1. 建库 在建库之前, 可能需要看一下, ...

  9. 免费开源的 .NET 分布式组件库 Exceptionless Foundatio

    前言 在互联网时代,分布式应用.系统变得越来越多,我们在使用 .Net 技术构建分布式系统的时候,需要使用到一些组件或者是助手库来帮助我们提高生产力以及应用程序解耦,但是纵观.Net圈,能够符合要求的 ...

  10. mono ios莫名其妙闪退的解决方法

    使用mono进行ios开发也有一年了,一直有个头疼的问题是闪退,而且闪退的时候并没有抛出明确的错误. 前两天在调试一个bug的时候,在序列化的时候又莫名其妙的闪退,后来在一位大神(博客地址)的指导下, ...