|
1,12 |
1,14 |
|
${smdncms:title,Mono のビルド・インストール (tarball)}
|
${smdncms:title,Mono のビルド・インストール (tarball)}
|
|
|
|
~ |
[[Mono:http://www.mono-project.com]]をソースからビルドしてインストールする手順。 本文の内容は''Mono 5.0.0''に基づく。
|
[[Mono:http://www.mono-project.com]]をソースからビルドしてインストールする手順。 本文の内容は''Mono 4.6.2''に基づく。
|
|
|
|
|
また、ビルドに使用した環境はUbuntu 16.04 LTS 64bit、本文中に掲載している所要時間はIntel Core i5-6402Pを積んだマシンで計測したもの。
|
また、ビルドに使用した環境はUbuntu 16.04 LTS 64bit、本文中に掲載している所要時間はIntel Core i5-6402Pを積んだマシンで計測したもの。
|
|
|
|
|
#relevantdocs(リリースノート・ソースの入手)
|
#relevantdocs(リリースノート・ソースの入手)
|
|
|
|
~ |
-[[Mono 5.0.0 Release Notes | Mono:http://www.mono-project.com/docs/about-mono/releases/5.0.0/]]
|
-[[Mono 4.6.2 Release Notes | Mono:http://www.mono-project.com/docs/about-mono/releases/4.6.2]]
|
- |
|
-[[Mono 4.6.1 Release Notes | Mono:http://www.mono-project.com/docs/about-mono/releases/4.6.1]]
|
- |
|
-[[Mono 4.6.0 Release Notes | Mono:http://www.mono-project.com/docs/about-mono/releases/4.6.0]]
|
|
-[[Download | Mono:https://download.mono-project.com/sources/mono/]]
|
-[[Download | Mono:https://download.mono-project.com/sources/mono/]]
|
|
|
|
|
#relevantdocs-end
|
#relevantdocs-end
|
|
18,7 |
20,7 |
|
|
|
|
#relevantdocs-end
|
#relevantdocs-end
|
|
|
|
~ |
ここで紹介する手順はMono本体といくつかのアセンブリをインストールするためのもの。 ディストリビューションが提供しているバージョンのMonoと共存できるようにするため、``/opt/mono/5.0``にインストールする。
|
ここで紹介する手順はMono本体といくつかのアセンブリをインストールするためのもの。 ディストリビューションが提供しているバージョンのMonoと共存できるようにするため、``/opt/mono/4.6``にインストールする。
|
|
|
|
|
#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/]]で詳しく解説されている。
|
|
29,7 |
31,7 |
|
#adunit
|
#adunit
|
|
|
|
|
*libgdiplus [#libgdiplus]
|
*libgdiplus [#libgdiplus]
|
~ |
``System.Drawing.dll``など、GDI+の機能を使用する場合のみ。 不要な場合はインストールを省略できる。
|
``System.Drawing.dll``など、GDI+を使用する場合のみ。 不要な場合はインストールを省略できる。
|
|
|
|
|
**依存するパッケージのインストール
|
**依存するパッケージのインストール
|
|
#code(sh){{
|
#code(sh){{
|
|
43,11 |
45,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.0/
|
./configure --prefix=/opt/mono/4.6/
|
|
}}
|
}}
|
|
|
|
|
#remarks
|
#remarks
|
~ |
Mono 5.0のリリース時点では5.0にバージョン付けされたlibgdiplusはリリースされていないので、libgdiplus-4.2を用いる。
|
Mono 4.6のリリース時点では4.6にバージョン付けされたlibgdiplusはリリースされていないので、libgdiplus-4.2を用いる。
|
|
#remarks-end
|
#remarks-end
|
|
|
|
|
``configure``の結果例。
|
``configure``の結果例。
|
|
55,7 |
57,7 |
|
---
|
---
|
|
Configuration summary
|
Configuration summary
|
|
|
|
~ |
* Installation prefix = /opt/mono/5.0
|
* Installation prefix = /opt/mono/4.6
|
|
* Cairo = 1.14.6 (system)
|
* Cairo = 1.14.6 (system)
|
|
* Text = cairo
|
* Text = cairo
|
|
* EXIF tags = yes
|
* EXIF tags = yes
|
|
82,18 |
84,18 |
|
|
|
|
正しくインストールできたか確認する。
|
正しくインストールできたか確認する。
|
|
#prompt{{
|
#prompt{{
|
~ |
$ PKG_CONFIG_PATH=/opt/mono/5.0/lib/pkgconfig pkg-config libgdiplus --modversion
|
$ PKG_CONFIG_PATH=/opt/mono/4.6/lib/pkgconfig pkg-config libgdiplus --modversion
|
|
4.2
|
4.2
|
|
|
|
~ |
$ PKG_CONFIG_PATH=/opt/mono/5.0/lib/pkgconfig pkg-config libgdiplus --libs
|
$ PKG_CONFIG_PATH=/opt/mono/4.6/lib/pkgconfig pkg-config libgdiplus --libs
|
~ |
-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
|
-L/opt/mono/4.6/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.0/lib/pkgconfig pkg-config libgdiplus --libs
|
$ PKG_CONFIG_PATH=/opt/mono/4.6/lib/pkgconfig pkg-config libgdiplus --libs
|
~ |
Variable 'libjpeg_prefix' not defined in '/opt/mono/5.0/lib/pkgconfig/libgdiplus.pc'
|
Variable 'libjpeg_prefix' not defined in '/opt/mono/4.6/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]])を代用する。
|
|
108,43 |
110,38 |
|
|
|
|
**ソースのダウンロードとconfigure
|
**ソースのダウンロードとconfigure
|
|
#code(sh){{
|
#code(sh){{
|
~ |
wget https://download.mono-project.com/sources/mono/mono-5.0.0.100.tar.bz2
|
wget https://download.mono-project.com/sources/mono/mono-4.6.2.16.tar.bz2
|
~ |
tar -xvf mono-5.0.0.100.tar.bz2
|
tar -xvf mono-4.6.2.16.tar.bz2
|
~ |
cd mono-5.0.0/
|
cd mono-4.6.2/
|
~ |
./configure --prefix=/opt/mono/5.0/ --with-libgdiplus=/opt/mono/5.0/ --with-ikvm-native=no --with-mcs-docs=no --with-x
|
./configure --prefix=/opt/mono/4.6/ --with-libgdiplus=/opt/mono/4.6/ --with-ikvm-native=no --with-mcs-docs=no --with-x
|
|
}}
|
}}
|
|
|
|
|
``configure``の結果例。
|
``configure``の結果例。
|
|
#prompt{{
|
#prompt{{
|
|
mcs source: mcs
|
mcs source: mcs
|
+ |
C# Compiler: roslyn
|
|
|
|
|
|
Engine:
|
Engine:
|
|
Host: x86_64-unknown-linux-gnu
|
Host: x86_64-unknown-linux-gnu
|
|
Target: x86_64-unknown-linux-gnu
|
Target: x86_64-unknown-linux-gnu
|
~ |
GC: sgen (concurrent by default) and Included Boehm GC with typed GC and parallel mark
|
GC: sgen and Included Boehm GC with typed GC and parallel mark
|
|
TLS: __thread
|
TLS: __thread
|
|
SIGALTSTACK: yes
|
SIGALTSTACK: yes
|
|
Engine: Building and using the JIT
|
Engine: Building and using the JIT
|
|
BigArrays: no
|
BigArrays: no
|
|
DTrace: no
|
DTrace: no
|
|
LLVM Back End: no (dynamically loaded: no)
|
LLVM Back End: no (dynamically loaded: no)
|
+ |
Interpreter: no
|
|
|
|
|
|
Libraries:
|
Libraries:
|
~ |
.NET 4.x: yes
|
.NET 4.6: yes
|
|
Xamarin.Android: no
|
Xamarin.Android: no
|
|
Xamarin.iOS: no
|
Xamarin.iOS: no
|
|
Xamarin.WatchOS: no
|
Xamarin.WatchOS: no
|
|
Xamarin.TVOS: no
|
Xamarin.TVOS: no
|
|
Xamarin.Mac: no
|
Xamarin.Mac: no
|
~ |
Windows AOT: no
|
mobile_static: no
|
+ |
Orbis: no
|
|
+ |
Test profiles: AOT Full (no), AOT Hybrid (no)
|
|
|
JNI support:
|
JNI support:
|
~ |
libgdiplus: /opt/mono/5.0/
|
libgdiplus: /opt/mono/4.6/
|
|
zlib: system zlib
|
zlib: system zlib
|
+ |
BTLS: yes (x86_64)
|
|
|
}}
|
}}
|
|
|
|
|
#remarks
|
#remarks
|
|
168,9 |
165,9 |
|
所要時間は以下のとおり。
|
所要時間は以下のとおり。
|
|
#prompt{{
|
#prompt{{
|
|
$ time make -j4
|
$ time make -j4
|
~ |
real 9m32.965s
|
real 4m46.900s
|
~ |
user 20m44.452s
|
user 10m30.052s
|
~ |
sys 0m47.596s
|
sys 0m26.468s
|
|
}}
|
}}
|
|
|
|
|
#relevantdocs(コンパイルに関するドキュメント)
|
#relevantdocs(コンパイルに関するドキュメント)
|
|
200,7 |
197,7 |
|
|
|
|
#prompt{{
|
#prompt{{
|
|
$ mono -V
|
$ mono -V
|
~ |
Mono JIT compiler version 5.0.0 (Stable 5.0.0.100/9667aa6 2017年 5月 22日 月曜日 20:02:08 JST)
|
Mono JIT compiler version 4.6.2 (Stable 4.6.2.16/ac9e222 2017年 2月 4日 土曜日 18:17:57 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
|
|
209,15 |
206,15 |
|
Disabled: none
|
Disabled: none
|
|
Misc: softdebug
|
Misc: softdebug
|
|
LLVM: supported, not enabled.
|
LLVM: supported, not enabled.
|
~ |
GC: sgen (concurrent by default)
|
GC: sgen
|
|
}}
|
}}
|
|
|
|
|
***既に別のバージョンのMonoが存在する環境にインストールした場合
|
***既に別のバージョンのMonoが存在する環境にインストールした場合
|
~ |
新しく``/opt/mono/5.0``にインストールしたMonoを参照できるように、環境変数を設定するスクリプトを用意しておく。
|
新しく``/opt/mono/4.6``にインストールしたMonoを参照できるように、環境変数を設定するスクリプトを用意しておく。
|
|
|
|
~ |
#code(sh,mono-5.0-env){{
|
#code(sh,mono-4.6-env){{
|
|
#!/bin/bash
|
#!/bin/bash
|
~ |
MONO_PREFIX=/opt/mono/5.0
|
MONO_PREFIX=/opt/mono/4.6
|
|
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
|
|
249,13 |
246,13 |
|
続いて、先ほど用意したスクリプトを読み込んだあとで``mono -V``を実行し、新しくインストールしたmonoが動作することを確認する。
|
続いて、先ほど用意したスクリプトを読み込んだあとで``mono -V``を実行し、新しくインストールしたmonoが動作することを確認する。
|
|
|
|
|
#prompt{{
|
#prompt{{
|
~ |
$ source mono-5.0-env
|
$ source mono-4.6-env
|
|
|
|
|
$ which mono
|
$ which mono
|
~ |
/opt/mono/5.0/bin/mono
|
/opt/mono/4.6/bin/mono
|
|
|
|
|
$ mono -V
|
$ mono -V
|
~ |
Mono JIT compiler version 5.0.0 (Stable 5.0.0.100/9667aa6 2017年 5月 22日 月曜日 20:02:08 JST)
|
Mono JIT compiler version 4.6.2 (Stable 4.6.2.16/ac9e222 2017年 2月 4日 土曜日 18:17:57 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
|
|
264,7 |
261,7 |
|
Disabled: none
|
Disabled: none
|
|
Misc: softdebug
|
Misc: softdebug
|
|
LLVM: supported, not enabled.
|
LLVM: supported, not enabled.
|
~ |
GC: sgen (concurrent by default)
|
GC: sgen
|
|
}}
|
}}
|
|
|
|
|
#relevantdocs(複数のバージョンのMonoを共存させる方法に関するドキュメント)
|
#relevantdocs(複数のバージョンのMonoを共存させる方法に関するドキュメント)
|
|
290,7 |
287,7 |
|
}}
|
}}
|
|
|
|
|
#remarks
|
#remarks
|
~ |
GACのパスを明示的に指定する場合は-rootオプションで指定する。 例えば``gacutil2 -l -root /opt/mono/5.0/lib/``など)
|
GACのパスを明示的に指定する場合は-rootオプションで指定する。 例えば``gacutil2 -l -root /opt/mono/4.6/lib/``など)
|
|
#remarks-end
|
#remarks-end
|
|
|
|
|
***mcs(C#コンパイラ)・mono(Monoランタイム)
|
***mcs(C#コンパイラ)・mono(Monoランタイム)
|
|
324,7 |
321,7 |
|
4.0.30319.42000
|
4.0.30319.42000
|
|
|
|
|
$ csharp -e 'Environment.OSVersion;'
|
$ csharp -e 'Environment.OSVersion;'
|
~ |
Unix 4.4.0.78
|
Unix 4.4.0.62
|
|
|
|
|
$ csharp
|
$ csharp
|
|
Mono C# Shell, type "help;" for help
|
Mono C# Shell, type "help;" for help
|
|
342,12 |
339,8 |
|
ここまでの手順でインストールされるアセンブリの一覧は以下の通り。
|
ここまでの手順でインストールされるアセンブリの一覧は以下の通り。
|
|
|
|
|
#prompt{{
|
#prompt{{
|
~ |
$ gacutil2 -l -root /opt/mono/5.0/lib/
|
$ gacutil2 -l -root /opt/mono/4.6/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 Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756 CustomMarshalers, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a I18N, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
+ |
Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
|
|
+ |
Commons.Xml.Relaxng, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
+ |
CustomMarshalers, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
|
|
+ |
I18N, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
|
I18N.CJK, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
I18N.CJK, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
I18N.MidEast, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
I18N.MidEast, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
I18N.Other, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
I18N.Other, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
373,10 |
366,8 |
|
Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
|
Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
|
|
Microsoft.VisualC, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
|
Microsoft.VisualC, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
|
|
Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
|
Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
|
+ |
Mono.Btls.Interface, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
|
Mono.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
Mono.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
Mono.Cairo, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
Mono.Cairo, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
+ |
Mono.Cecil, Version=0.10.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
|
Mono.Cecil, Version=0.9.5.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
Mono.Cecil, Version=0.9.5.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
Mono.CodeContracts, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
Mono.CodeContracts, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
Mono.CompilerServices.SymbolWriter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
Mono.CompilerServices.SymbolWriter, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
390,6 |
381,10 |
|
Mono.Parallel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
Mono.Parallel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
Mono.Posix, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
Mono.Posix, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
- |
|
Mono.Security.Providers.DotNet, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
- |
|
Mono.Security.Providers.NewSystemSource, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
- |
|
Mono.Security.Providers.NewTls, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
- |
|
Mono.Security.Providers.OldTls, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
Mono.Security.Win32, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
Mono.Security.Win32, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
Mono.Simd, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
Mono.Simd, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
Mono.Tasklets, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
Mono.Tasklets, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
|
|
504,7 |
499,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 = 160
|
Number of items = 162
|
|
}}
|
}}
|
|
|
|
|
|
|