Installazione di llvm e clang su ubuntu


16

Quindi sto cercando di installare Halide sul mio Ubuntu 12.04 (64 bit). Ho bisogno di llvm-3.2 e clang da installare.

L'esecuzione sudo apt-get install llvm-3.2termina con "pacchetto non trovato".

Prova sudo apt-get install llvmo sudo apt-get install clanginstalla versioni 2.9. Google mi ha aiutato con questo

sudo add-apt-repository ppa:kxstudio-team/builds
sudo apt-get update

Ora sudo apt-get install llvm-3.2 clang-3.2funziona. Ma quando eseguo make nella cartella Halide ottengo ancora clang: comando non trovato.


2
Presumo che "clag: comando non trovato" dovrebbe leggere "clang: comando non trovato"?
andyg0808,

sì, mi dispiace per quello

Stai usando Ubuntu con una GUI o uno con solo una riga di comando?
andyg0808,

Inoltre, hai bisogno di clang 3.2 o semplicemente clang 3+?
andyg0808,

Ho scaricato la versione desktop. In realtà ho bisogno di llvm 3.2, non c'è parola sulla versione di clang.

Risposte:


9

Ok, così ho compilato con successo ad alogenuri su Ubuntu 13.04 con l'installazione llvm, clange build-essential. La mia unica ipotesi sul tuo problema è che il LLVM o il clangore dal PPA che hai installato potrebbe non aver funzionato abbastanza bene. Sembra che sia effettivamente possibile ottenere LLVM 3.2 da Ubuntu per 12.04, tramite quello che è noto come l'archivio "proposto". Potresti provare a eliminare LLVM che hai e installarlo da "proposta". Spiegherò come farlo di seguito. Dato che hai menzionato che sei nuovo su Ubuntu (nella versione con la domanda originale), spiegherò prima cosa fa ogni comando che hai già usato, come meglio posso.

Quindi, sudo apt-get install llvm-3.2tenta di installare il pacchetto denominato llvm-3.2dai repository correnti abilitati sul sistema. Nel tuo caso, non è stato trovato, quindi il comando non è riuscito. sudo apt-get install llvmha installato il llvmpacchetto, che è probabilmente un pacchetto speciale che utilizza solo il LLVM più aggiornato disponibile nei repository standard. Nel tuo caso, quello era 2.9. La stessa idea si applica a sudo apt-get install clang. sudo add-apt-repository ppa:kxstudio-team/builds aggiunge quello che viene chiamato un archivio di pacchetti personali o PPA al tuo sistema. Ciò consente di ottenere più software da un altro repository o fonte di software. Vedi https://help.launchpad.net/Packaging/PPA per maggiori informazioni. Infine,sudo apt-get updatedice a Ubuntu di ottenere informazioni su quali pacchetti sono disponibili dai repository attualmente disponibili. Potresti dare un'occhiata a http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html per maggiori informazioni sulla gestione dei pacchetti in Debian (la maggior parte delle quali dovrebbe valere anche per Ubuntu, poiché Ubuntu è basato su Debian).

Quindi, i passaggi per rimuovere i pacchetti che hai e installare le versioni disponibili da proposti con precisione:

  1. Utilizzare sudo apt-get purge llvm-3.2 clang-3.2per rimuovere completamente LLVM e il clang dal sistema.
  2. (Facoltativo) Utilizzare sudo add-apt-repository --remove ppa:kxstudio-team/buildsper rimuovere il PPA dal sistema.
  3. Seguire le istruzioni su https://wiki.ubuntu.com/Testing/EnableProposed per abilitare l'archivio proposto (proprio nella parte superiore della pagina) e seguire anche le istruzioni per "Aggiornamento selettivo da -proposto". La prima parte abiliterà la versione attuale del llvm-3.2pacchetto Ubuntu , e la seconda impedirà al sistema di tentare di aggiornare tutto alle versioni proposte.
  4. Utilizzare sudo apt-get updateper inserire le informazioni su quali pacchetti e versioni sono ora disponibili.
  5. Usa sudo apt-get install llvm-3.2/precise-proposedper installare LLVM 3.2 e usa sudo apt-get install clang/precise-proposedper installare Clang 3.0 (penso che sia la versione che dovresti ottenere).
  6. NUOVO PASSO: Do sudo ln -s /usr/bin/llvm-config-3.2 /usr/local/bin/llvm-configper rendere il trattamento del sistema llvm-config-3.2(che è il llvm-configche è venuto con llvm-3.2) come llvm-config. Più completamente, questo crea un collegamento simbolico (o symlink) a llvm-config-3.2 in un altro posto in cui Ubuntu cercherà i programmi (maggiori informazioni: ln , FHS , PATH ). Pertanto, quando esegui "llvm-config", Ubuntu troverà il collegamento simbolico ed eseguirà il programma a cui punta ( llvm-config-3.2).
  7. Vedi se tutto ora viene compilato correttamente.

Speriamo che funzioni. Non ho provato nulla di tutto ciò, quindi usalo a tuo rischio, ecc. Sono abbastanza sicuro, tuttavia, che non dovrebbe fare nulla di terribile.

EDIT: si noti che llvme llvm-3.2sono indipendenti. llvmdipende da llvm-2.9( vedi qui ), mentre llvm-3.2è separato ( vedi dipendenze qui )

Inoltre, non sono sicuro che tu sia a conoscenza del completamento della scheda ; può essere utile se stai cercando un comando ma non conosci il nome (ad esempio, in questo caso, probabilmente avrebbe mostrato che è llvm-configstato chiamato llvm-config-3.2).


Molte grazie! Ha quasi funzionato. L'unico problema è che llvm-3.2 installato non ha llvm-config. Quindi quando eseguo make in Halide dice che non è installato llvm. Ho eseguito install llvm e ora llvm-config --version dice 2.9. Se provo a installare llvm-3.2 mi dice che è l'ultima versione. Sembra che llvm-3.2 e llvm siano completamente indipendenti.

Vedi il nuovo passaggio nella risposta; probabilmente vorrai disinstallare il llvmpacchetto ( sudo apt-get purge llvm) prima di farlo per assicurarti di ottenere la versione giusta. Puoi sempre controllare quale file stai tentando di eseguire usando il comando which [command]. Ad esempio, which llvm-configdovrebbe leggere /usr/local/bin/llvm-config. Vedi en.wikipedia.org/wiki/Which_%28Unix%29 per maggiori informazioni.
andyg0808,

perché llvm-config non è collegato a llvm-config-3.2 proprio come lo è per gcc? è una scelta consapevole?
Janus Troelsen,

@JanusTroelsen Credo che sia una scelta consapevole. Poiché la versione di LLVM che era disponibile dal llvmpacchetto per Ubuntu 12.04 era llvm-2.9, il llvm-configcomando era collegato alla llvm-configstessa versione, cioè llvm-config-2.9. In Ubuntu 13.04 e 13.10, il llvmpacchetto installa LLVM 3.2 e mi aspetterei che poi si configurasse llvm-config-3.2come llvm-config, cosa che fa in Ubuntu 13.10.
Andyg0808
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.