2012-12-13 12 views
6

Próbuję skompilować Mono 3.0.2 z archiwum Mono repozytorium GitHub. Ale kiedy się w folderze mcs, kompilacji zawiedzie:Błąd podczas próby kompilacji Mono 3.0.2 na CentOS 6.2

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 

Ja już próbowałem instalacji monolit wykonując make get-monolite-latest i już próbowałem zainstalować wersje 2.x, a następnie kompilacji. Żadne z tych rozwiązań nie zadziałało. Moje zainteresowanie wersją 3.0.2 to nowy Razor Template Engine i framework MVC 4, ale jeśli nie ma możliwości kompilacji/instalacji lub pakietów binarnych dla CentOS 6, byłbym wdzięczny repozytorium z wcześniejszymi wersjami.

Odpowiedz

10

Podfoldery zawierają zewnętrzne zależności przy użyciu tak zwanych git submodules.

Jeśli podczas kompilacji z archiwum pojawią się błędy związane z brakującymi plikami w którymkolwiek z tych katalogów, domyślam się, że niezależnie od tego, który skrypt jest używany do utworzenia tego pliku, jest on uszkodzony i nie zawiera żadnej z tych zależności.

Jeśli masz źródła bezpośrednio z github, musisz uruchomić git submodule init i git submodule update.

Teoretycznie można pobrać każdy z tych submodułów z github, patrząc na plik .gitmodules.

Jednak git rejestruje określoną wersję każdego modułu w każdym zatwierdzeniu głównego modułu. Więc jeśli wymeldujesz się z jakiegoś konkretnego zatwierdzenia w mono i użyjesz git submodule update, otrzymasz dokładnie taką samą wersję każdego z tych modułów, którego użył autor zatwierdzenia, kiedy dokonał tego zatwierdzenia.

Polecam po prostu użyć git, aby pobrać źródła, jeśli chcesz skompilować ze źródła. Automatycznie uzyska poprawną wersję każdej z zależności, a także ułatwi późniejsze aktualizowanie do nowych wersji i/lub wprowadzanie zmian lokalnych.

+0

To działało dobrze. Dziękuję Ci bardzo! –

+0

Dziękuję, że pracował dla mnie również dla najnowszej wersji (3.1.2) –

+0

Dla odniesienia, tarka mono-4.3.2.467 na karcie Releases w repozytorium GitHub jest jedną z tych wersji, która jest zepsuta. >. < –

Powiązane problemy