2012-12-13 13 views
6

Sto provando a compilare Mono 3.0.2 da un tarball del repository Mono di GitHub. Ma quando arrivo nella cartella mcs, la compilazione fallisce:Errore durante il tentativo di compilare Mono 3.0.2 su 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 

Ho già provato l'installazione di monolite facendo make get-monolite-latest e già provato ad installare le versioni 2.xe quindi la compilazione. Nessuna di queste soluzioni ha funzionato. Il mio interesse per la versione 3.0.2 è il nuovo Razor Template Engine e il framework MVC 4, ma, se non ci sono possibilità di compilare/installare o pacchetti binari per CentOS 6, gradirei un repository con versioni precedenti.

risposta

10

Le sottodirectory external/ contengono dipendenze esterne utilizzando il cosiddetto git submodules.

Se si verificano errori relativi a file mancanti in una di queste directory durante la compilazione da un tarball, la mia ipotesi è che qualsiasi script utilizzato per creare questo tarball sia danneggiato e non includa alcuna di queste dipendenze.

Se le sorgenti sono state generate direttamente da github, è necessario eseguire git submodule init e git submodule update.

In teoria, è possibile scaricare ciascuno di questi sottomoduli da github guardando il file .gitmodules.

Tuttavia, git registra la revisione specifica di ciascun sottomodulo in ciascuno dei commit del modulo principale. Quindi, se esegui il checkout di alcuni commit specifici in mono e utilizzi git submodule update, otterrai esattamente la stessa revisione di ciascuno di questi moduli che l'autore del commit stava usando quando ha eseguito il commit.

Si consiglia di utilizzare semplicemente git per ottenere i sorgenti se si desidera compilare dal sorgente. Otterrà automaticamente la versione corretta di ciascuna delle dipendenze e renderà più semplice l'aggiornamento successivo alle nuove versioni e/o apporterà modifiche locali.

+0

Ha funzionato bene. Grazie mille! –

+0

Grazie per aver funzionato anche con me per l'ultima versione (3.1.2) –

+0

Per riferimento, il tarball mono-4.3.2.467 nella scheda releases del repository GitHub è una di quelle release che è danneggiata. >. < –

Problemi correlati