1. 程式人生 > >Arch Linux 安裝 Mono 2.11.4 備忘錄

Arch Linux 安裝 Mono 2.11.4 備忘錄

從原始碼編譯 Mono 2.11.4

基本步驟如下所示:

~$ cd repo
repo$ wget http://download.mono-project.com/sources/mono/mono-2.11.4.tar.bz2
repo$ tar xjf mono-2.11.4.tar.bz2
repo$ du -hs mono-2.11.4*
438M	mono-2.11.4
40M	mono-2.11.4.tar.bz2
repo$ cd mono-2.11.4
mono-2.11.4$ ./configure --prefix=/opt/mono-2.11.4
 ......

        mcs source:    mcs

   Engine:
	GC:	       sgen and bundled Boehm GC with typed GC and parallel mark
	TLS:           __thread
	SIGALTSTACK:   yes
	Engine:        Building and using the JIT
	oprofile:      no
	BigArrays:     no
	DTrace:        no
	LLVM Back End: no (dynamically loaded: no)

   Libraries:
	.NET 2.0/3.5:  yes
	.NET 4.0:      yes
	.NET 4.5:      yes
	MonoDroid:     no
	MonoTouch:     no
	Mobile:        no
	JNI support:   IKVM Native
	libgdiplus:    assumed to be installed
	zlib:          system zlib

mono-2.11.4$ make
mono-2.11.4$ sudo make install

驗證安裝結果

試執行一下:

~$ /opt/mono-2.11.4/bin/mono --version
Mono JIT compiler version 2.11.4 (tarball 2012年 10月 12日 星期五 09:57:56 CST)
Copyright (C) 2002-2012 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
	TLS:           __thread
	SIGSEGV:       altstack
	Notifications: epoll
	Architecture:  amd64
	Disabled:      none
	Misc:          softdebug 
	LLVM:          supported, not enabled.
	GC:            Included Boehm (with typed GC and Parallel Mark)
~$ /opt/mono-2.11.4/bin/mcs --version
Mono C# compiler version 2.11.4.0

檢查一下 Arch Linux 自帶的 Mono 2.10.8:

~$ mono --version
Mono JIT compiler version 2.10.8 (tarball Sat Oct  6 23:22:30 UTC 2012)
Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com
	TLS:           __thread
	SIGSEGV:       altstack
	Notifications: epoll
	Architecture:  amd64
	Disabled:      none
	Misc:          softdebug 
	LLVM:          supported, not enabled.
	GC:            Included Boehm (with typed GC and Parallel Mark)
~$ mcs --version
Mono C# compiler version 2.10.8.0

檢驗 .NET Framework 和 CLR 版本

如下所示:

ClrInfo$ /opt/mono-2.11.4/bin/mono ClrInfo40.exe
      OS Version: Unix 3.5.6.1
     CLR Version: 4.0.30319.17020  ( 2.11.4 (tarball 2012年 10月 12日 星期五 09:57:56 CST) )
Default Encoding: System.Text.UTF8Encoding

System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.IO.Packaging.Package, WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
System.TimeZoneInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Available Frameworks:
  Mono 1.0 Profile
  Mono 2.0 Profile
ClrInfo$ mono ClrInfo40.exe
      OS Version: Unix 3.5.6.1
     CLR Version: 4.0.30319.1  ( 2.10.8 (tarball Sat Oct  6 23:22:30 UTC 2012) )
Default Encoding: System.Text.UTF8Encoding

System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.IO.Packaging.Package, WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
System.TimeZoneInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Available Frameworks:
  Mono 1.0 Profile
  Mono 2.0 Profile

可見 Mono 2.11.4 已經支援 .NET Framework 4.5 和 CLR 4.5 了。Microsoft .NET Framework 4.5 RTM 和 CLR 4.5 對應的版本號是: 4.0.30319.17929。Mono 2.11.4 因為是 Alpha 版本,所以對應的版本號是 4.0.30319.17020。Microsoft .NET Framework 4.5 是就地替換 .NET Framework 4,她們的版本號都是 4.0.30319,一般認為 Revision 小於 17000 就是 .NET 4,大於 17000 就是 .NET 4.5。

磁碟佔用

我們來看看 Mono 需要佔用多少磁碟空間吧:

~$ du -hs repo/mono-2.11.4 /opt/mono-2.11.4
1.2G	repo/mono-2.11.4
325M	/opt/mono-2.11.4
~$ pacman -Qi mono
名稱   : mono
版本   : 2.10.8-2
URL地址 : http://www.mono-project.com/
軟體許可 : GPL  LGPL2  MPL  custom:MITX11
軟體組  : 無
提供   : monodoc
依賴於  : zlib  libgdiplus>=2.10  sh
可選依賴 : 無
要求被  : dbus-sharp  gtk-sharp-2  mono-addins  monodevelop
衝突與  : monodoc
取代   : 無
安裝後大小:139620.00 KiB
打包者  : Tom Gundersen <[email protected]>
架構   : x86_64
編譯日期 : 2012年10月07日 星期日 07時28分31秒
安裝日期 : 2012年10月11日 星期四 08時07分59秒
安裝原因 : 單獨指定安裝
安裝指令碼 : 否
描述   : Free implementation of the .NET platform including runtime and compiler

可以看出,Mono 2.11.4 原始碼經編譯後佔用 1.2 GB 的磁碟空間,如果不研究原始碼的話,安裝完成後就可以刪除了。Mono 2.11.4 目的碼佔用 325 MB 的磁碟空間。而 Arch Linux 自帶的 Mono 2.10.8 軟體包占用大約 139 MB 的磁碟空間。

參考資料