最近公司有項目想要在樹莓派上做,代替原來的工控機(我們是把工控主機當作小的主機用,一台小的工控主機最少也要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.1 切換路徑 ./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.1 切換路徑 ./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/)