Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error when trying to compile Mono 3.0.2 on CentOS 6.2

Tags:

mono

centos

I'm trying to compile Mono 3.0.2 from a tarball of GitHub's Mono repo. But when I get in the mcs folder, the compiling fails:

if test -w /root/mono/mcs; then :; else chmod -R +w /root/mono/mcs; fi
    cd /root/mono/mcs && make --no-print-directory -s NO_DIR_CHECK=1 PROFILES=' net_2_0            net_3_5 net_4_0 net_4_5  ' CC='gcc' all-profiles
    Bootstrap compiler: Mono C# compiler version 3.0.3.0
    Makefile:43: warning: overriding commands for target 'csproj-local'
../build/executable.make:149: warning: ignoring old commands for target 'csproj-local'
    Makefile:43: warning: overriding commands for target 'csproj-local'
../build/executable.make:149: warning: ignoring old commands for target 'csproj-local'
    make[7]: *** No rule to make target '../../external/ikvm/reflect/*.cs', needed by '../class/lib/basic/basic.exe'.  Stop.
    make[6]: *** [do-all] Error 2
    make[5]: *** [all-recursive] Error 1
    make[4]: *** [profile-do--basic--all] Error 2
    make[3]: *** [profiles-do--all] Error 2
    make[2]: *** [all-local] Error 2
    make[2]: Leaving directory '/root/mono/runtime'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory '/root/mono'
    make: *** [all] Error 2

I've already tried installing monolite by doing make get-monolite-latest and already tried to install 2.x versions and then compiling. None of these solutions worked. My interest in the 3.0.2 version is the new Razor Template Engine and the MVC 4 framework, but, if there's no possibility to compile/install or binary packages for CentOS 6, I would appreciate a repository with previous versions.

like image 563
Gabriel Ferreira Rosalino Avatar asked Dec 13 '12 02:12

Gabriel Ferreira Rosalino


1 Answers

The external/ subdirectories contain external dependencies using so-called git submodules.

If you get any errors related to missing files in any of these directories when compiling from a tarball, then my guess is that whatever script is used to create this tarball is broken and doesn't include any of these dependencies.

If you got your sources directly from github, then you need to run git submodule init and git submodule update.

In theory, you could download each of these submodules from github by looking at the .gitmodules file.

However, git records the specific revision of each submodule in each of the main module's commits. So if you checkout some specific commit in mono and use git submodule update, you'll get the exact same revision of each of these modules that the author of the commit was using when he made that commit.

I'd recommend to simply use git to get the sources if you want to compile from source. It will automatically get the correct version of each of the dependencies for you and also make it easier for you to later update to new versions and/or make local changes.

like image 157
Martin Baulig Avatar answered Sep 28 '22 10:09

Martin Baulig