Raspberry Pi의 Mono [닫힘]


78

Raspberry Pi에서 Mono / .NET 코드를 실행하는 것에 대한 많은 이야기를 보았습니다 . Raspberry Pi에서 실제로 Mono 코드를 실행하는 데 성공한 적이 있습니까?

그들의 사이트에는 장치에서 작동하는 여러 Linux 배포판이 나열되어 있으며 이러한 배포판 중 일부에는 Mono가 포함됩니다. 그러나 Mono가 작동하는지 여부는 자세히 설명하지 않습니다.

작동하는 구현이 있습니까?



20
그 질문은 런타임이 아닌 MonoDevelop (IDE)에 관한 것입니다. 저는 이것이 다른 것이 아니라 Raspberry Pi에서 Mono를 사용하고자하는 개발자들이 처음으로 맞을 것이라고 생각합니다.
Ani

동의합니다. mono를 실행하는 것은 MonoDevelop를 실행하는 것과 상당히 다릅니다. 이것은 합법적 인 별도의 질문입니다.
Joe Strout 2013 년

Pi에 설치된 MySql 데이터베이스를 사용하는 EntityFramework로 WCF 서비스를 실행할 수있었습니다. 테스트 프로젝트 였지만 성능은 좋았습니다.
vpetrovic

답변:


32

Debian 6.0 (Squeeze) 및 Mono에서 Delta Forth .NET 컴파일러 를 실행했습니다 . 완전한 바이너리 호환성으로 완벽하게 작동했습니다. 제가해야 할 일은 데비안의 Mono가 .NET 버전과 관련하여 약간 뒤처지기 때문에 .NET 3.5 (4.0 대신)를 대상으로 코드를 다시 컴파일하는 것뿐이었습니다.

컴파일러는 사소한 .NET 응용 프로그램이 아니기 때문에 실제로 작은 Raspberry Pi에서 컴파일러가 작동하는 것을 볼 수있어서 기뻤습니다.

마법을 실현하기 위해 내가 취한 실제 단계는 다음과 같습니다.

  • 다음을 사용하여 Mono 런타임을 설치합니다. sudo apt-get install mono
  • 다음을 사용하여 컴파일러 자체를 호출하십시오. mono DeltaForth.exe file_to_compile.4th

그게 다입니다. 이 노력의 가장 어려운 부분은 플래시 드라이브를 사용하여 Windows 컴퓨터에서 Raspberry Pi로 파일을 전송하는 것이 었습니다. :-)


9
'sudo apt-get install mono'가 작동하지 않았습니다. 저는 'sudo apt-get install mono-complete'를 사용했습니다. 지금까지 작동하는 것 같습니다!
kodybrown

2
컴파일을 원하는 분들을위한 사이드 노트 .. raspi에서 내 코드를 컴파일하려면 'mcs sample.cs'를, 실행하려면 'mono sample.exe'를 사용해야했습니다 .. 작동합니다. 내 파이에 C #을 프로그래밍하려면 :-D
kodybrown

2
@wasatchwizard- "mono"가 아니라 "mono-runtime", "mono-complete"도 작동하지만 훨씬 더 크고 모노의 모든 부분이므로 많은 추가 라이브러리를 얻을 수 있습니다. 작은 설치 공간을 구축하려는 경우 해당 패키지가 솔루션이 아니지만 설치하는 데 시간이 오래 걸리더라도 저도 선호합니다.
BerggreenDK

3
@vbocan-CIFS 네트워크 드라이브를 내 PC / LAN에 마운트 한 다음 MonoDeveloper를 사용하여 최신 PC (Intel Core i7)에서 최고 속도로 mono.exe 파일을 컴파일합니다. 그런 다음 바이너리가 완료되면 Raspberry PI에서 LAN을 통해 실행하기 만하면됩니다. 매력으로 작동합니다! 컴파일은 아주 쉽습니다.
BerggreenDK 2013

4
다음 번에는 플래시 드라이브를 사용하는 대신 Raspberry pi에 파일을 SCP로 지정하십시오. Windows에서는 WinSCP를 사용할 수 있습니다.
Tom van Zummeren 2013 년

21

Raspberri Pi 보드의 사람들 은 Mono가 최소한 간단한 애플리케이션 에서는 실제로 작동한다고보고합니다 .


하지만 현재 버그는 DateTime이 stringformatting을 사용할 때 예상대로 작동하지 않습니다.
BerggreenDK

DateTime의 문자열 형식이 아닙니다. 문제는 깊고 널리 퍼져 있습니다. 버그 보고서 ( bugzilla.xamarin.com/show_bug.cgi?id=7938 ) 및 해당 보고서에 연결된 다른 보고서를 참조하세요 .
Joe Strout 2013 년

DateTime 문제는 소프트 / 하드 플로트 문제처럼 들립니다. 모노 2 용 소프트 플로트 배포판이 필요합니다. 모노 3을 사용하는 경우 하드 플로트 배포판을 사용할 수 있습니다 (모노를 직접 컴파일해야 할 수도 있지만 그렇게 어렵지는 않습니다).
피아트 2014 년

19

Raspberry Pi의 Mono는 가능하고 설정이 상당히 쉽습니다. 다음은 Debian을 사용한다고 가정합니다. 이것은 여러 Raspberry Pi 자습서를 제공하는 내 블로그 에서 가져온 것입니다.

참고 : 현재 사용 가능한 표준 Mono 런타임은 소스에서 직접 컴파일하지 않는 한 최대 .NET 3.5 만 지원합니다.

따라서 Raspberry Pi 용 일부 애플리케이션 개발을 시작하고 싶지만 프로그래밍 지식은 VB.NETC # 과 같은 최신 .NET 언어로 제한됩니다 . 문제가 아니다!! .NET 프레임 워크의 오픈 소스 크로스 플랫폼 및 호환 버전 인 Mono의 세계에 오신 것을 환영합니다. 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

@AngryHacker 전반적으로 나는 그 가격에 좋다고 말할 것입니다. 데이터 / 시간이 중요한 작업에 대해 신뢰할 수있는 매우 안정적인 마이크로 컨트롤러가 아닙니다. 그리고 상당한 부분에 사용되는 부품 (가격)으로 인해 힘이 부족할 수 있지만 테스트 기반 / 프레임 워크 또는 초기 프로토 타이핑 프레임 워크로서 환상적입니다. 가르치도록 설계되었으며 하드웨어가이를 반영합니다. 현장 사용의 경우 다른 옵션이 더 좋습니다.
S_BatMan

Windows 7에서 MonoDevelop을 사용하여 애플리케이션을 개발 / 컴파일 / 테스트 한 다음 나중에 내 Raspberry PI로 전송할 수 있습니까? 아니면 소스 파일을 이동하고 장치에서 직접 컴파일해야합니까? 난 .. 단지 LAN에 bin 폴더를 공개 ... LAN을 통해 파일을 transfering의 생각
BerggreenDK

솔직히 말해서 내가 시도한 것은 아니지만 JIT의 natue로 인해 예, 이것은 완전히 가능해야합니다. 실제로 파이의 모노 버전에서 사용할 수없는 기능을 사용하지 않는다고 가정하면 모든 모노 exe를 실행할 수 있어야합니다
S_BatMan 2013 년


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

4

Fedora 18 리믹스를 실행하는 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>  

6
수표에 "Math.Pow (2,4);"를 추가해야합니다. 이것이 16을 반환하면 좋은 것입니다. 가비지를 반환하면 하드 플로트 ABI를 사용하는 ARM Linux 배포판의 Mono에서 버그가 발생한 것입니다.
Joe Strout 2013 년


1

ExaGear Desktop 소프트웨어를 사용하여 Raspberry Pi에서 x86 버전의 Mono를 실행할 수 있습니다 .

거의 모든 x86 앱을 실행할 수 있으며 Wine을 설치하여 Windows 앱을 실행할 수도 있습니다.

그들은 Firefox가 네이티브보다 빠르게 작동한다고 말합니다 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.