在 Ubuntu 10.10 操作系统中安装 Mono 2.8.2

前言

Ubuntu 10.10 自带了 Mono 2.6.7。而目前最新版本是 Mono 2.8.2。由于 Ubuntu 操作系统中的“阿贴便笺”等软件是用 C# 开发的,因此它们依赖于 Mono 。为了不破坏 Ubuntu 操作系统中这类软件,我们需要并行地安装 Mono 2.8.2,具体做法是安装到 /opt/mono-2.8.2 目录下。这样两个版本的 Mono 就可以共存了。

准备工作

先准备一下编译环境,使用如下的命令来安装: 

ben@ben-m4000t:~$ sudo apt-get install build-essential automake libtool mono-complete gendarme subversion libpng-dev libtiff-dev libgif-dev libjpeg-dev libexif-dev autoconf bison flex libcairo-dev libpango1.0-dev

上面的 build-essential 软件包是基本的编译环境,包括 C/C++ 编译器。而 mono-complete 是 mono 的编译环境,包括 C# 编译器。Ubuntu 操作系统默认安装的是 mono 的运行环境,并不包括编译环境。你没有看错,我们想从源代码编译 mono 2.8.2,先要安装一个操作系统默认提供的 mono 编译环境,对于 Ubuntu 10.10 操作系统来说就是 mono 2.6.7 的编译环境。mono 的源代码核心部分是用 C/C++ 语言编写的,可能还有一部分是用汇编语言编写的。但是还有一大部分,比如 .NET Framework Base Class Library 之类的,是用 C# 语言编写的。所以说,从源代码编译高版本的 mono,需要先安装低版本的 mono。

从源代码编译 Mono 2.8.2

现在让我们从 Mono 的源代码自己编译一个吧:

ben@ben-m4000t:~$ cd src
ben@ben-m4000t:~/src$ wget http://ftp.novell.com/pub/mono/sources/mono/mono-2.8.2.tar.bz2
--2011-01-07 10:02:49--  http://ftp.novell.com/pub/mono/sources/mono/mono-2.8.2.tar.bz2
正在解析主机 ftp.novell.com... 130.57.1.88
正在连接 ftp.novell.com|130.57.1.88|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 31292886 (30M) [application/x-bzip2]
正在保存至: “mono-2.8.2.tar.bz2”

100%[===========================>] 31,292,886  15.5K/s   花时 28m 14s

2011-01-07 10:31:04 (18.0 KB/s) - 已保存 “mono-2.8.2.tar.bz2” [31292886/31292886])

ben@ben-m4000t:~/src$ tar xjf mono-2.8.2.tar.bz2
ben@ben-m4000t:~/src$ rm mono-2.8.2.tar.bz2
ben@ben-m4000t:~/src$ cd mono-2.8.2
ben@ben-m4000t:~/src/mono-2.8.2$ ./configure --prefix=/opt/mono-2.8.2

==========> 这里省略了一大堆输出 <==========

        mcs source:    mcs
        olive source:  

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

    Libraries:
	Moon Profile:  no
	MonoTouch:     no
	JNI support:   IKVM Native
	libgdiplus:    assumed to be installed
	zlib:          system zlib

ben@ben-m4000t:~/src/mono-2.8.2$ make
=====> 这里进行漫长的编译过程,并产生一大堆输出 <=====
ben@ben-m4000t:~/src/mono-2.8.2$ sudo make install
===> 这里进行不那么漫长的安装过程,并产生一大堆输出 <===
ben@ben-m4000t:~/src/mono-2.8.2$ 

注意上面为编译配置环境时使用了 --prefix=/opt/mono-2.8.2 参数,这是并行安装的关键。如果省略这个参数,最后使用 make install 进行安装时就会覆盖掉原来的 mono 2.6.7 版本。

安装后的配置

安装完毕后,可以添加一些快捷的命令:

ben@ben-m4000t:~$ cd bin
ben@ben-m4000t:~/bin$ cat dmcs
exec /opt/mono-2.8.2/bin/dmcs "$@"
ben@ben-m4000t:~/bin$ cat mono28
exec /opt/mono-2.8.2/bin/mono "$@"

上面的意思是说使用你自己喜欢的编辑器,比如 vim,或者 gedit,在 $HOME/bin 目录下建立快捷命令,以方便使用。命令的内容就如上所示。mono28 命令用来运行“mono 2.8.2 运行时”本身,dmcs 用来运行 mono 2.8.2 的 C# 4.0 编译器。注意 mono 2.6.7 的 C# 编译器是 gmcs,而没有 dmcs,所以就不用写成 dmcs28 了。mono 2.8.2 也有 C# 2.0 编译器,也叫 gmcs,如果需要的话,直接用 /opt/mono-2.8.2/bin/gmcs 运行好了。

验证安装结果

试运行一下:

ben@ben-m4000t:~$ mono28 --version
Mono JIT compiler version 2.8.2 (tarball 2011年 01月 07日 星期五 10:52:34 CST)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
	TLS:           __thread
	SIGSEGV:       altstack
	Notifications: epoll
	Architecture:  amd64
	Disabled:      none
	Misc:          debugger softdebug 
	LLVM:          supported, not enabled.
	GC:            Included Boehm (with typed GC and Parallel Mark)
ben@ben-m4000t:~$ dmcs --version
Mono C# compiler version 2.8.2.0
ben@ben-m4000t:~$ /opt/mono-2.8.2/bin/gmcs --version
Mono C# compiler version 2.8.2.0

 

检查一下 Ubuntu 10.10 自带的 mono 2.6.7:

ben@ben-m4000t:~$ mono --version
Mono JIT compiler version 2.6.7 (Debian 2.6.7-3ubuntu1)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
	TLS:           __thread
	GC:            Included Boehm (with typed GC and Parallel Mark)
	SIGSEGV:       altstack
	Notifications: epoll
	Architecture:  amd64
	Disabled:      none
ben@ben-m4000t:~$ gmcs --version
Mono C# compiler version 2.6.7.0

原来的 mono 并没有被我们破坏。

实际应用

让我们使用刚安装好的 Mono 2.8.2 来编译和运行一个 C# 程序吧:

ben@ben-m4000t:~/work/AboutDialog$ dmcs @mak.rsp
ben@ben-m4000t:~/work/AboutDialog$ mono28 AboutDialogTester.exe
发布了32 篇原创文章 · 获赞 1 · 访问量 22万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章