2017-08-17T17:58:07の更新内容

programming/mono/build_install/mono_from_git-master/index.wiki.txt

current previous
1,6 1,6
 
${smdncms:title,Mono のビルド・インストール (Git master)}
${smdncms:title,Mono のビルド・インストール (Git master)}
 
${smdncms:keywords,Git,master}
${smdncms:keywords,Git,master}
~
[[Mono:http://www.mono-project.com/]]を[[Gitのソース:http://github.com/mono]]からビルドしてインストールする手順。 本文の内容は''2017年08月17日''時点のバージョンに基づく。
[[Mono:http://www.mono-project.com/]]を[[Gitのソース:http://github.com/mono]]からビルドしてインストールする手順。 本文の内容は''2017年05月22日''時点のバージョンに基づく。
 

        

        
 
また、ビルドに使用した環境はUbuntu 16.04 LTS 64bit、本文中に掲載している所要時間はIntel Core i5-6402Pを積んだマシンで計測したもの。
また、ビルドに使用した環境はUbuntu 16.04 LTS 64bit、本文中に掲載している所要時間はIntel Core i5-6402Pを積んだマシンで計測したもの。
 

        

        
154,7 154,6
 
	Xamarin.Mac:     no
	Xamarin.Mac:     no
 
	Windows AOT:     no
	Windows AOT:     no
 
	Orbis:           no
	Orbis:           no
+
	Unreal:          no
 
	Test profiles:   AOT Full (no), AOT Hybrid (no)
	Test profiles:   AOT Full (no), AOT Hybrid (no)
 
	JNI support:     
	JNI support:     
 
	libgdiplus:      /opt/mono/master
	libgdiplus:      /opt/mono/master
183,9 182,9
 
#prompt{{
#prompt{{
 
$ time make -j4
$ time make -j4
 

        

        
~
real	12m59.881s
real	9m10.662s
~
user	27m18.964s
user	20m58.960s
~
sys	0m57.564s
sys	0m51.272s
 
}}
}}
 

        

        
 
#relevantdocs(コンパイルに関するドキュメント)
#relevantdocs(コンパイルに関するドキュメント)
215,7 214,7
 

        

        
 
#prompt{{
#prompt{{
 
$ mono -V
$ mono -V
~
Mono JIT compiler version 5.7.0 (master/aa7cd58 2017年  8月 17日 木曜日 17:40:46 JST)
Mono JIT compiler version 5.3.0 (master/a0fc3f4 2017年  5月 23日 火曜日 20:17:26 JST)
 
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
 
	TLS:           __thread
	TLS:           __thread
 
	SIGSEGV:       altstack
	SIGSEGV:       altstack
270,7 269,7
 
/opt/mono/master/bin/mono
/opt/mono/master/bin/mono
 

        

        
 
$ mono -V
$ mono -V
~
Mono JIT compiler version 5.7.0 (master/aa7cd58 2017年  8月 17日 木曜日 17:40:46 JST)
Mono JIT compiler version 5.3.0 (master/a0fc3f4 2017年  5月 23日 火曜日 20:17:26 JST)
 
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
 
	TLS:           __thread
	TLS:           __thread
 
	SIGSEGV:       altstack
	SIGSEGV:       altstack
352,7 351,7
 
4.0.30319.42000
4.0.30319.42000
 

        

        
 
$ csharp -e 'Environment.OSVersion;'
$ csharp -e 'Environment.OSVersion;'
~
Unix 4.4.0.89
Unix 4.4.0.59
 

        

        
 
$ csharp
$ csharp
 
Mono C# Shell, type "help;" for help
Mono C# Shell, type "help;" for help

programming/mono/build_install/mono_from_tarball/index.wiki.txt

current previous
1,12 1,11
 
${smdncms:title,Mono のビルド・インストール (tarball)}
${smdncms:title,Mono のビルド・インストール (tarball)}
 

        

        
~
[[Mono:http://www.mono-project.com]]をソースからビルドしてインストールする手順。 本文の内容は''Mono 5.2.0''に基づく。
[[Mono:http://www.mono-project.com]]をソースからビルドしてインストールする手順。 本文の内容は''Mono 5.0.0''に基づく。
 

        

        
 
また、ビルドに使用した環境はUbuntu 16.04 LTS 64bit、本文中に掲載している所要時間はIntel Core i5-6402Pを積んだマシンで計測したもの。
また、ビルドに使用した環境はUbuntu 16.04 LTS 64bit、本文中に掲載している所要時間はIntel Core i5-6402Pを積んだマシンで計測したもの。
 

        

        
 
#relevantdocs(リリースノート・ソースの入手)
#relevantdocs(リリースノート・ソースの入手)
 

        

        
+
-[[Mono 5.2.0 Release Notes | Mono:http://www.mono-project.com/docs/about-mono/releases/5.2.0/]]
 
-[[Mono 5.0.0 Release Notes | Mono:http://www.mono-project.com/docs/about-mono/releases/5.0.0/]]
-[[Mono 5.0.0 Release Notes | Mono:http://www.mono-project.com/docs/about-mono/releases/5.0.0/]]
 
-[[Download | Mono:https://download.mono-project.com/sources/mono/]]
-[[Download | Mono:https://download.mono-project.com/sources/mono/]]
 

        

        
19,7 18,7
 

        

        
 
#relevantdocs-end
#relevantdocs-end
 

        

        
~
ここで紹介する手順はMono本体といくつかのアセンブリをインストールするためのもの。 ディストリビューションが提供しているバージョンのMonoと共存できるようにするため、``/opt/mono/5.2``にインストールする。
ここで紹介する手順はMono本体といくつかのアセンブリをインストールするためのもの。 ディストリビューションが提供しているバージョンのMonoと共存できるようにするため、``/opt/mono/5.0``にインストールする。
 

        

        
 
#remarks
#remarks
 
1つの環境に複数のMonoをインストールする方法については[[Parallel Mono Environments - Mono:http://www.mono-project.com/docs/compiling-mono/parallel-mono-environments/]]で詳しく解説されている。
1つの環境に複数のMonoをインストールする方法については[[Parallel Mono Environments - Mono:http://www.mono-project.com/docs/compiling-mono/parallel-mono-environments/]]で詳しく解説されている。
44,11 43,11
 
wget https://download.mono-project.com/sources/libgdiplus/libgdiplus-4.2.tar.gz
wget https://download.mono-project.com/sources/libgdiplus/libgdiplus-4.2.tar.gz
 
tar -xvf libgdiplus-4.2.tar.gz 
tar -xvf libgdiplus-4.2.tar.gz 
 
cd libgdiplus-4.2/
cd libgdiplus-4.2/
~
./configure --prefix=/opt/mono/5.2/
./configure --prefix=/opt/mono/5.0/
 
}}
}}
 

        

        
 
#remarks
#remarks
~
Mono 5.2のリリース時点では5.2にバージョン付けされたlibgdiplusはリリースされていないので、libgdiplus-4.2を用いる。
Mono 5.0のリリース時点では5.0にバージョン付けされたlibgdiplusはリリースされていないので、libgdiplus-4.2を用いる。
 
#remarks-end
#remarks-end
 

        

        
 
``configure``の結果例。
``configure``の結果例。
56,7 55,7
 
---
---
 
Configuration summary
Configuration summary
 

        

        
~
   * Installation prefix = /opt/mono/5.2
   * Installation prefix = /opt/mono/5.0
 
   * Cairo = 1.14.6 (system)
   * Cairo = 1.14.6 (system)
 
   * Text = cairo
   * Text = cairo
 
   * EXIF tags = yes
   * EXIF tags = yes
83,18 82,18
 

        

        
 
正しくインストールできたか確認する。
正しくインストールできたか確認する。
 
#prompt{{
#prompt{{
~
$ PKG_CONFIG_PATH=/opt/mono/5.2/lib/pkgconfig pkg-config libgdiplus --modversion
$ PKG_CONFIG_PATH=/opt/mono/5.0/lib/pkgconfig pkg-config libgdiplus --modversion
 
4.2
4.2
 

        

        
~
$ PKG_CONFIG_PATH=/opt/mono/5.2/lib/pkgconfig pkg-config libgdiplus --libs
$ PKG_CONFIG_PATH=/opt/mono/5.0/lib/pkgconfig pkg-config libgdiplus --libs
~
-L/opt/mono/5.2/lib -lgdiplus -lglib-2.0 -lcairo -lfontconfig -lfreetype -lXrender -lX11 -ljpeg -ltiff -lgif -lpng12 -lexif -Wl,--export-dynamic -lgmodule-2.0 -pthread -lgthread-2.0 -pthread -lglib-2.0
-L/opt/mono/5.0/lib -lgdiplus -lglib-2.0 -lcairo -lfontconfig -lfreetype -lXrender -lX11 -ljpeg -ltiff -lgif -lpng12 -lexif -Wl,--export-dynamic -lgmodule-2.0 -pthread -lgthread-2.0 -pthread -lglib-2.0
 
}}
}}
 

        

        
 
#remarks
#remarks
 
libgdiplus-4.2ではpkgconfigで以下のようなエラーが表示される。
libgdiplus-4.2ではpkgconfigで以下のようなエラーが表示される。
 
#prompt{{
#prompt{{
~
$ PKG_CONFIG_PATH=/opt/mono/5.2/lib/pkgconfig pkg-config libgdiplus --libs
$ PKG_CONFIG_PATH=/opt/mono/5.0/lib/pkgconfig pkg-config libgdiplus --libs
~
Variable 'libjpeg_prefix' not defined in '/opt/mono/5.2/lib/pkgconfig/libgdiplus.pc'
Variable 'libjpeg_prefix' not defined in '/opt/mono/5.0/lib/pkgconfig/libgdiplus.pc'
 
}}
}}
 

        

        
 
libgdiplusをMono(System.Drawing.dll)を通して使用する場合はこのまま続行しても問題ない。 直接リンクする場合など、これが問題となる場合はGit masterのlibgdiplus([[programming/mono/build_install/mono_from_git-master#libgdiplus]])を代用する。
libgdiplusをMono(System.Drawing.dll)を通して使用する場合はこのまま続行しても問題ない。 直接リンクする場合など、これが問題となる場合はGit masterのlibgdiplus([[programming/mono/build_install/mono_from_git-master#libgdiplus]])を代用する。
109,10 108,10
 

        

        
 
**ソースのダウンロードとconfigure
**ソースのダウンロードとconfigure
 
#code(sh){{
#code(sh){{
~
wget https://download.mono-project.com/sources/mono/mono-5.2.0.215.tar.bz2
wget https://download.mono-project.com/sources/mono/mono-5.0.0.100.tar.bz2
~
tar -xvf mono-5.2.0.215.tar.bz2 
tar -xvf mono-5.0.0.100.tar.bz2
~
cd mono-5.2.0.215/
cd mono-5.0.0/
~
./configure --prefix=/opt/mono/5.2/ --with-libgdiplus=/opt/mono/5.2/ --with-ikvm-native=no --with-mcs-docs=no --with-x
./configure --prefix=/opt/mono/5.0/ --with-libgdiplus=/opt/mono/5.0/ --with-ikvm-native=no --with-mcs-docs=no --with-x
 
}}
}}
 

        

        
 
``configure``の結果例。
``configure``の結果例。
143,7 142,7
 
	Orbis:           no
	Orbis:           no
 
	Test profiles:   AOT Full (no), AOT Hybrid (no)
	Test profiles:   AOT Full (no), AOT Hybrid (no)
 
	JNI support:     
	JNI support:     
~
	libgdiplus:      /opt/mono/5.2/
	libgdiplus:      /opt/mono/5.0/
 
	zlib:            system zlib
	zlib:            system zlib
 
	BTLS:            yes (x86_64)
	BTLS:            yes (x86_64)
 
}}
}}
169,9 168,9
 
所要時間は以下のとおり。
所要時間は以下のとおり。
 
#prompt{{
#prompt{{
 
$ time make -j4
$ time make -j4
~
real	10m23.262s
real	9m32.965s
~
user	20m33.616s
user	20m44.452s
~
sys	0m42.424s
sys	0m47.596s
 
}}
}}
 

        

        
 
#relevantdocs(コンパイルに関するドキュメント)
#relevantdocs(コンパイルに関するドキュメント)
201,7 200,7
 

        

        
 
#prompt{{
#prompt{{
 
$ mono -V
$ mono -V
~
Mono JIT compiler version 5.2.0.215 (tarball 2017年  8月 17日 木曜日 17:35:11 JST)
Mono JIT compiler version 5.0.0 (Stable 5.0.0.100/9667aa6 2017年  5月 22日 月曜日 20:02:08 JST)
 
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
 
	TLS:           __thread
	TLS:           __thread
 
	SIGSEGV:       altstack
	SIGSEGV:       altstack
214,11 213,11
 
}}
}}
 

        

        
 
***既に別のバージョンのMonoが存在する環境にインストールした場合
***既に別のバージョンのMonoが存在する環境にインストールした場合
~
新しく``/opt/mono/5.2``にインストールしたMonoを参照できるように、環境変数を設定するスクリプトを用意しておく。
新しく``/opt/mono/5.0``にインストールしたMonoを参照できるように、環境変数を設定するスクリプトを用意しておく。
 

        

        
 
#code(sh,mono-5.0-env){{
#code(sh,mono-5.0-env){{
 
#!/bin/bash
#!/bin/bash
~
MONO_PREFIX=/opt/mono/5.2
MONO_PREFIX=/opt/mono/5.0
 
GNOME_PREFIX=/usr
GNOME_PREFIX=/usr
 
export DYLD_FALLBACK_LIBRARY_PATH=$MONO_PREFIX/lib:$DYLD_LIBRARY_FALLBACK_PATH
export DYLD_FALLBACK_LIBRARY_PATH=$MONO_PREFIX/lib:$DYLD_LIBRARY_FALLBACK_PATH
 
export LD_LIBRARY_PATH=$MONO_PREFIX/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$MONO_PREFIX/lib:$LD_LIBRARY_PATH
250,13 249,13
 
続いて、先ほど用意したスクリプトを読み込んだあとで``mono -V``を実行し、新しくインストールしたmonoが動作することを確認する。
続いて、先ほど用意したスクリプトを読み込んだあとで``mono -V``を実行し、新しくインストールしたmonoが動作することを確認する。
 

        

        
 
#prompt{{
#prompt{{
~
$ source mono-5.2-env
$ source mono-5.0-env
 

        

        
 
$ which mono
$ which mono
~
/opt/mono/5.2/bin/mono
/opt/mono/5.0/bin/mono
 

        

        
 
$ mono -V
$ mono -V
~
Mono JIT compiler version 5.2.0.215 (tarball 2017年  8月 17日 木曜日 17:35:11 JST)
Mono JIT compiler version 5.0.0 (Stable 5.0.0.100/9667aa6 2017年  5月 22日 月曜日 20:02:08 JST)
 
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
 
	TLS:           __thread
	TLS:           __thread
 
	SIGSEGV:       altstack
	SIGSEGV:       altstack
291,7 290,7
 
}}
}}
 

        

        
 
#remarks
#remarks
~
GACのパスを明示的に指定する場合は-rootオプションで指定する。 例えば``gacutil2 -l -root /opt/mono/5.2/lib/``など)
GACのパスを明示的に指定する場合は-rootオプションで指定する。 例えば``gacutil2 -l -root /opt/mono/5.0/lib/``など)
 
#remarks-end
#remarks-end
 

        

        
 
***mcs(C#コンパイラ)・mono(Monoランタイム)
***mcs(C#コンパイラ)・mono(Monoランタイム)
325,7 324,7
 
4.0.30319.42000
4.0.30319.42000
 

        

        
 
$ csharp -e 'Environment.OSVersion;'
$ csharp -e 'Environment.OSVersion;'
~
Unix 4.4.0.89
Unix 4.4.0.78
 

        

        
 
$ csharp
$ csharp
 
Mono C# Shell, type "help;" for help
Mono C# Shell, type "help;" for help
343,8 342,8
 
ここまでの手順でインストールされるアセンブリの一覧は以下の通り。
ここまでの手順でインストールされるアセンブリの一覧は以下の通り。
 

        

        
 
#prompt{{
#prompt{{
~
$ gacutil2 -l -root /opt/mono/5.2/lib/
$ gacutil2 -l -root /opt/mono/5.0/lib/
~
The following assemblies are installed into the GAC:                                                                            
The following assemblies are installed into the GAC:
 
Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 
Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
 
CustomMarshalers, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
CustomMarshalers, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
451,6 450,7
 
System.Reflection.Context, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.Reflection.Context, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 
System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 
System.Runtime.DurableInstancing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
System.Runtime.DurableInstancing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
-
System.Runtime.InteropServices.RuntimeInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 
System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
 
System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
 
System.Runtime.Serialization.Formatters.Soap, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.Runtime.Serialization.Formatters.Soap, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
504,7 504,7
 
nunit.framework.extensions, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77
nunit.framework.extensions, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77
 
nunit.mocks, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77
nunit.mocks, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77
 
nunit.util, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77
nunit.util, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77
~
Number of items = 159
Number of items = 160
 
}}
}}