银河

SKYIV STUDIO

  博客园 :: 首页 :: 博问 :: 闪存 :: :: :: 订阅 订阅 :: 管理 ::
  268 随笔 :: 2 文章 :: 2606 评论 :: 48 引用

公告

从源代码编译 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 <teg@jklm.no>
架构   : 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 的磁盘空间。

参考资料

  1. 在 Ubuntu 10.10 操作系统中安装 Mono 2.8.2
  2. .NET Framework CLR 版本检测
  3. Microsoft .NET Framework 的版本
posted on 2012-10-12 10:29 银河 阅读(...) 评论(...) 编辑 收藏