Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MonoDevelop ARMv6 on Raspberry Pi

Will MonoDevelop compile to the ARMv6, mainly so I can get it running on my Raspberry Pi?


I've noted that Debian can run on the Raspberry Pi and Debian has a set of drivers for Mono.

So does this mean we'll be able to develop in Mono?

like image 954
Coppermill Avatar asked Mar 03 '12 14:03

Coppermill


2 Answers

The Mono project supports ARM, so one should be able to build and use MonoDevelop on the Raspberry Pi. At least that's what I'm hoping!


2012-05-16

I got my Raspberry Pi yesterday (yay!) and can confirm that it is possible to compile and run .NET code (I tested with C#) using Mono and its MCS compiler module. This was all done via the shell and not a GUI. It would be great to get the MonoDevelop IDE running if at all possible though.

For those interested, you can install Mono by typing:

sudo apt-get install mono-complete 

This also includes the MCS compiler module, so you can simply compile a .cs file thus:

mcs program.cs 

and run it like so:

mono program.exe 
like image 77
wmartin129 Avatar answered Sep 21 '22 17:09

wmartin129


Just a note to add to the other answers, it works fine on the Debian install but does not yet work on the Raspbian install because of missing compiler support. More information can be found here:

http://www.raspberrypi.org/phpBB3/viewtopic.php?f=66&t=11634&start=25

Quoted from what appears to be the most informed answer:

As I understand it, Raspbian uses a different "calling convention", so floating point numbers are "transferred" on the CPU in a different way. All compilers must create machine code that uses the Raspbian calling convention. It's no problem for software compiled with GCC, as it is configured to use that calling convention by default.

However, when using less common compilers (like the mono CLI -> machine code just-in-time compiler), things are not quite working yet. The mono JIT compiler apparently uses the old calling convention for everything it compiles, because no one has implemented the new calling convention in mono yet. That's fine as long as the mono code doesn't call into some non-mono code, but breaks as soon as you use a native library.

The details in this are probably wrong, but maybe it describes the problem in general.

Edit: And just to make this clear, the "Raspbian calling convention" is nothing specially created for raspbian. It's the same as in debian armhf and (I think) any other linux that uses armhf.

like image 44
Adam Houldsworth Avatar answered Sep 22 '22 17:09

Adam Houldsworth