介紹
本文綜合了很多現有文章並總結了如何在Windows下創建Mono。
如何你想找編譯好的Mono 3.4.0版本,請直接訪問這裡。
Mono項目的基礎教程在這裡可以找到。
理論上,我所提供的這些教程應該足夠讓你去成功編譯Mono了。但是,在實際操作過程中,可能會略微復雜些。所以其他人也提供了一些補充文檔,叫我們怎麼編譯Mono。這其中,這個《Building Mono on Windows: The Final Battle"》教程尤其有幫助。
雖然這麼說,但是這些教程已經是很多年前的了,使用的過程中難免會遇到問題,針對這些問題,我提供以下詳細完整教程。
我們現從當前的版本(當我寫這篇文章時,Mono發布的版本是3.4.0)構建,然後再從git的代碼庫中構建最新的版本。
在Linux(Ubuntu/openSUSE/CentOS)下配置ASP.NET(Apache + Mono) http://www.linuxidc.com/Linux/2013-07/87599.htm
配置Linux(Apache) + Mono 下運行 asp.net http://www.linuxidc.com/Linux/2013-07/87598.htm
如何升級Mono http://www.linuxidc.com/Linux/2013-06/85391.htm
在Mono 3.0 下運行ASP.NET 4網站的主意事項 http://www.linuxidc.com/Linux/2013-06/85394.htm
在Ubuntu操作系統上安裝Mono和Jexus搭建.NET的運行環境 http://www.linuxidc.com/Linux/2013-06/85388.htm
主要步驟如下:
安裝預編譯的Mono
安裝&配置Cygwin
下載並解壓Mono的源代碼
構建Mono
修改 Cygwin/Mono 來解決構建過程中出現的問題
安裝 Mono 並修改安裝配置
針對Xamarin Studio的一些修改和配置
從git下載源代碼,並構建Mono
這個步驟在Windows 8.1 64位的系統下測試可用。
安裝編譯好的Mono執行文件
一個穩定並完成編譯的Mono 3.2.3可以在這裡下載。下載並安裝它。
從開始欄打開命令行,之後用一下命令檢查它是否正常運行著:
1
mono --version
你應該看到以下信息出現,並且確定版本是3.2.3:
C:\Program Files (x86)\Mono-3.2.3>mono --version
Mono JIT compiler version 2.10.9 (tarball)
Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-pro
ject.com
TLS: normal
SIGSEGV: normal
Notification: Thread + polling
Architecture: x86
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: Included Boehm (with typed GC and Parallel Mark)
C:\Program Files (x86)\Mono-3.2.3>
安裝Cygwin
下載並安裝32位的Cygwin,這是一款在Windows下模擬Unix命令行的工具,我們用它來創建Mono。安裝教程可以參考這裡。
安裝過程中,你會被提示要選擇安裝必要的包。我們創建Mono所需要的包並沒有在默認安裝設置裡,所以我們要手動選擇他們。
在Mono on Windows教程裡提到了很多關於包的細節,這些包應該是:
1
autoconf, automake,bison, gcc-core, gcc-g++,mingw-gcc, libtool, make, python,
在《Final Ba ttle instructions》說提到了這些包:
1
gettext-devel, gettext, intltool, libiconv, pkg-config
另外,我們最好也要這些包:
1
wget, zip patch, openssh, vim
有人通過 mono-dev 的郵件列表向我建議說,Cygwin 應該可以通過配置 "noacl" 選項來掛載系統的宿主系統的磁盤驅動器,否則的話,進行文件訪問的時候可能會出問題。你可以點擊此處還有此處了解詳情。
從開始菜單中打開Cygwin,編輯 /etc/fstab 文件,並按照下面的指示操作:
1
# For a description of the file format, see the Users Guide
2
# http:
//cygwin.com/cygwin-ug-net/using.html#mount-table
3
# This is
default
anyway:
4
none /cygdrive cygdrive binary,posix=
0
,user
0
0
把 noacl 選項添加進去,如下所示:
1
# For a description of the file format, see the Users Guide
2
# http:
//cygwin.com/cygwin-ug-net/using.html#mount-table
3
# This is
default
anyway:
4
none /cygdrive cygdrive binary,noacl,posix=
0
,user
0
0
你可能需要關掉Cygwin並重新打開它來確保使剛才的修改生效。你可以通過運行 'mount' 命令看一下 'noacl'是否在其輸出的內容裡面,以便檢查配置是否生效。
當我寫這篇文章的時候,Mono的最新發布版本是3.4.0。在Windows下,還沒有該版本的安裝包,最新的安裝包是3.2.3。我們要在這裡構建一個3.4.0版本的二進制包。
你可以從這裡下載 Mono 3.4.0 的源代碼,並把它解壓到你的磁盤上。
你需要使用 Cygwin來下載和解壓源碼。你也可以在Cygwin外部做這些事,但是如果你不注意的話,可能會發現代碼中的換行符(CRLF)被修改掉了,這很可能會導致構建失敗。
所以,打開 Cygwin 終端命令行:
1
$ cd /cygdrive/c $ mkdir monosources$ cd monosources $ wget http:
//download.mono-project.com/sources/mono/mono-3.4.0.tar.bz2
2
$ tar xjvf mono-
3.4
.
0
.tar.bz2
構建Mono的時候可能會出現一些錯誤,如文件丟失,或者和Cygwin的頭文件沖突等。如果出現錯誤,我們可以按照下面的說明來修正錯誤,但是我們現在要做的是開始構建Mono,看看我們能走到哪一步。
我們要給 Mono 3.4.0 指定一個目標文件夾,並且我們將要把它設置成安裝目錄。如下所示:
1
$ cd /cygdrive/c
2
$ mkdir monoinstall
3
$ cd monosources/mono-
3.4
.
0
4
$ ./autogen.sh --prefix=
"C:\monoinstall"
--with-preview=yes
注意:我們給 --prefix指定的是Win32指定的路徑格式,而不是Cygwin或 *nix的路徑格式。
Autogen應該順利的完成,接下來我們就要配置構建命令了,如autogen推薦的那樣:
1
$ ./configure --host=i686-pc-mingw32
在配置進程結束的時候,我們能夠看到類型下面的一些輸出:
01
mcs source: mcs
02
03
Engine:
04
GC: sgen and bundled Boehm GC with typed GC and parallel mark
05
TLS: pthread
06
SIGALTSTACK: no
07
Engine: Building and using the JIT
08
oprofile: no
09
BigArrays: no
10
DTrace: no
11
LLVM Back End: no (dynamically loaded: no)
12
13
Libraries:
14
.NET
2.0
/
3.5
: yes
15
.NET
4.0
: yes
16
.NET
4.5
: yes
17
MonoDroid: no
18
MonoTouch: no
19
Xamarin.Mac: no
20
JNI support: no
21
libgdiplus: assumed to be installed
22
zlib:
一旦配置結束,我們就可以用以下方式來開始構建進程了。
1
$ make
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-05/102123p2.htm