2012-05-20T12:42:06の更新内容

programming/mono/build_install/monodevelop-3.0/index.wiki.txt

current previous
1,150 0,0
+
${smdncms:title,MonoDevelop 3.0 のビルド・インストール}
+
${smdncms:keywords,MonoDevelop 3.0,Ubuntu 12.04}
+
[[MonoDevelop 3.0:http://monodevelop.com/]]をソースからビルドしてインストールする手順。 検証に使った環境はUbuntu 12.04 (Precise Pangolin)。
+

          
+
-リンク
+
--[[Release Notes for MonoDevelop 3.0 - MonoDevelop:http://monodevelop.com/Download/Release_Notes/Release_Notes_for_MonoDevelop_3.0]]
+
-関連するページ
+
--[[programming/mono/build_install]]
+

          
+
*MonoDevelop本体
+
**MonoDevelopが必要とするアセンブリのインストール
+
MonoDevelopが必要とするアセンブリをあらかじめインストールしておく。 必要になるものは以下のアセンブリ。 各アセンブリのインストール方法については[[programming/mono/build_install/mono-2.10]]もしくは[[programming/mono/build_install/mono-2.11]]を参照のこと。
+
-MonoDevelopが必要とするアセンブリ・パッケージ
+
--Mono (2.10.8以上)
+
--Mono Addins
+
--gtk-sharp (2.12.8以上)
+
--monodoc
+
--gecko-sharp
+
--gtksourceview-sharp
+
--mono-debugger (デバッガを使用する場合)
+

          
+
**ソースのダウンロードとconfigure
+
#commentout{{{
+
#code(sh){{
+
wget http://download.mono-project.com/sources/monodevelop/monodevelop-3.0.1.tar.bz2
+
tar -xvf monodevelop-3.0.1.tar.bz2 
+
cd monodevelop-3.0.1/
+
./configure --prefix=/opt/mono/2.11/ --enable-git
+
}}
+
}}}
+
3.0.1の時点では、tarballを使ってビルドしようとすると「src/addins/MonoDevelop.CodeMetrics/Makefile.inが見つからない」というエラーが出てサブモジュールのビルドに失敗するため、ソースをgitから取得してビルドする。 ([[[MonoDevelop] Building MD 3.0.1:http://lists.ximian.com/pipermail/monodevelop-list/2012-May/014739.html:]])
+

          
+
#code(sh){{
+
git clone git://github.com/mono/monodevelop.git -b 3.0-series ./monodevelop-3.0.x
+
cd monodevelop-3.0.x/
+
}}
+

          
+
~--selectオプションをつけて./configureを実行し、ビルドするアドインを選択/解除する。
+

          
+
#prompt{{
+
$ ./configure --prefix=/opt/mono/2.11/ --select
+

          
+
Select the packages to include in the build for the profile 'default':
+

          
+
1. [X] main
+
2. [ ] extras/JavaBinding
+
3. [ ] extras/ValaBinding
+
4. [ ] extras/MonoDevelop.Database
+
5. [ ] extras/MonoDevelop.Debugger.Gdb
+
6. [ ] extras/PyBinding
+
7. [ ] extras/MonoDevelop.MonoMac
+
8. [ ] extras/MonoDevelop.MeeGo
+

          
+
Enter the number of an add-in to enable/disable,
+
(q) quit, (c) clear all, (s) select all, or ENTER to continue:  
+

          
+
Configuring package: main
+
-------------------------
+
}}
+

          
+
configureの結果を確認する。
+

          
+
#prompt{{
+
Configuration summary
+

          
+
   * Installation prefix = /opt/mono/2.11
+
   * C# compiler = /opt/mono/2.11/bin/dmcs
+
   * Mono class library development extensions: yes
+
   * Version control providers:
+
   *     Subversion (Unix): yes
+
   *     Git: yes
+
   * Platform bindings: GNOME 
+
   * Unit tests: no
+

          
+
Now type `make' to compile MonoDevelop
+
Configuration Summary
+
---------------------
+

          
+
MonoDevelop has been configured with 
+
    prefix = /opt/mono/2.11/
+
    profile = default
+

          
+
Packages included in the build:
+
    main
+
}}
+

          
+
**ビルド、起動
+
問題が無ければ、makeする。
+
#code(sh){{
+
make
+
}}
+

          
+
ビルドしたものをインストールせず、すぐに実行したければmake runする。
+
#code(sh){{
+
make run
+
}}
+

          
+
インストールするには、make installする。
+
#code(sh){{
+
sudo make install
+
}}
+

          
+
***symbol lookup errorが発生して起動できない場合の対処
+
GLibのバージョンが2.31以上の場合、g_thread_*が定義されておらず、MonoDevelopの起動時に以下のようなエラーが発生する。 (MonoDevelop本体ではなくgtk-sharp-2.0の問題)
+
#prompt{{
+
monodevelop: symbol lookup error: /opt/mono/2.11/lib/libglibsharpglue-2.so: undefined symbol: g_thread_supported
+
}}
+

          
+
gtk-sharp-2.0をビルドする前に、glib/Thread.csを以下のように修正してg_thread_*を呼び出さないように変更することで上記のエラーは発生しなくなる。 (gtk-sharp-2.12.11で確認済み)
+

          
+
#code(diff,glib/Thread.cs){{
+
--- Thread.cs.org	2012-05-20 12:15:21.030339182 +0900
+
+++ Thread.cs	2012-05-20 12:18:47.251019917 +0900
+
@@ -26,10 +26,20 @@
+
 
+
 	public class Thread
+
 	{
+
 		private Thread () {}
+
 		
+
+#if true
+
+		public static void Init ()
+
+		{
+
+		}
+
+
+
+		public static bool Supported
+
+		{
+
+			get { return true; }
+
+		}
+
+#else
+
 		[DllImport("libgthread-2.0-0.dll")]
+
 		static extern void g_thread_init (IntPtr i);
+
 
+
 		public static void Init ()
+
 		{
+
@@ -43,7 +53,8 @@
+
 		{
+
 			get {
+
 				return glibsharp_g_thread_supported ();
+
 			}
+
 		}
+
+#endif
+
 	}
+
 }
+
}}
+

          
+
-参考
+
--[[[2 commits] be18f433: glib: do not call g_thread_ functions in GLib >= 2.31 - mono-svn-patches | Google グループ:http://groups.google.com/group/mono-svn-patches/browse_thread/thread/3b20cf2ed5617cc5?pli=1]]
+

          
+

          
+