Installation de llvm et clang sur ubuntu

16

J'essaie donc d'installer Halide sur mon Ubuntu 12.04 (64 bits). J'ai besoin de llvm-3.2 et clang pour être installé.

L'exécution sudo apt-get install llvm-3.2se termine par «package introuvable».

Essayer sudo apt-get install llvmou sudo apt-get install clanginstaller des versions 2.9. Google m'a aidé avec ça

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

Maintenant, ça sudo apt-get install llvm-3.2 clang-3.2marche. Mais quand je lance make dans le dossier Halide, je reçois toujours clang: Command not found.

Andrei Ivanov
la source
2
Je suppose que "clag: Command not found" devrait se lire "clang: Command not found"?
andyg0808
oui, désolé
Utilisez-vous un Ubuntu avec une interface graphique ou un avec juste une ligne de commande?
andyg0808
De plus, avez-vous besoin de clang 3.2 ou simplement de clang 3+?
andyg0808
J'ai téléchargé la version Desktop. J'ai en fait besoin de llvm 3.2, il n'y a pas de mot sur la version de clang.

Réponses:

9

Ok, donc je Halide compilé sur Ubuntu 13.04 avec succès en installant llvm, clanget build-essential. Ma seule supposition quant à votre problème est que le LLVM ou le clang du PPA que vous avez installé n'a peut-être pas fonctionné correctement. Il semble qu'il soit réellement possible d'obtenir LLVM 3.2 d'Ubuntu pour 12.04, via ce que l'on appelle l'archive "proposée". Vous pouvez essayer de purger le LLVM que vous avez et de l'installer à partir de "proposé". Je vais vous expliquer comment faire cela ci-dessous. Puisque vous avez mentionné que vous êtes nouveau sur Ubuntu (dans la version originale de la question), je vais d'abord expliquer ce que fait chaque commande que vous avez déjà utilisée, du mieux que je peux.

Donc, sudo apt-get install llvm-3.2tente d'installer le package nommé à llvm-3.2partir des référentiels actuels activés sur votre système. Dans votre cas, il est introuvable, la commande a donc échoué. sudo apt-get install llvminstallé le llvmpackage, qui est probablement un package spécial qui utilise uniquement le LLVM le plus récent disponible dans vos référentiels standard. Dans votre cas, c'était 2,9. La même idée s'applique à sudo apt-get install clang. sudo add-apt-repository ppa:kxstudio-team/builds ajoute ce que l'on appelle une archive de package personnelle ou PPA à votre système. Cela vous permet d'obtenir plus de logiciels à partir d'un autre référentiel ou d'une source logicielle. Voir https://help.launchpad.net/Packaging/PPA pour plus d'informations. Finalement,sudo apt-get updateindique à Ubuntu d'obtenir des informations sur les packages disponibles dans les référentiels actuellement disponibles. Vous pouvez consulter http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html pour plus d'informations sur la gestion des paquets dans Debian (dont la plupart devraient également s'appliquer à Ubuntu, depuis Ubuntu est basé sur Debian).

Ainsi, les étapes pour supprimer les packages que vous avez et installer les versions disponibles de precise-propose:

  1. Utilisez sudo apt-get purge llvm-3.2 clang-3.2pour supprimer complètement LLVM et clang de votre système.
  2. (Facultatif) Utilisez sudo add-apt-repository --remove ppa:kxstudio-team/buildspour supprimer le PPA de votre système.
  3. Suivez les instructions sur https://wiki.ubuntu.com/Testing/EnableProposed pour activer l'archive proposée (en haut de la page), et suivez également les instructions pour "Mise à niveau sélective de -proposée". La première partie activera la version Ubuntu réelle du llvm-3.2package, et la seconde empêchera le système d'essayer de tout mettre à niveau vers les versions proposées.
  4. Utilisez sudo apt-get updatepour extraire les informations sur les packages et les versions disponibles.
  5. Utilisez sudo apt-get install llvm-3.2/precise-proposedpour installer LLVM 3.2, et utilisez sudo apt-get install clang/precise-proposedpour installer Clang 3.0 (je pense que c'est la version que vous devriez obtenir).
  6. NOUVELLE ÉTAPE: Faites sudo ln -s /usr/bin/llvm-config-3.2 /usr/local/bin/llvm-configpour que le système traite llvm-config-3.2(qui est llvm-configfourni avec llvm-3.2) comme llvm-config. Plus complètement, cela crée un lien symbolique (ou lien symbolique) vers llvm-config-3.2 dans un autre endroit où Ubuntu recherchera des programmes (plus d'informations: ln , FHS , PATH ). Ainsi, lorsque vous exécutez "llvm-config", Ubuntu trouvera le lien symbolique et exécutera le programme vers lequel il pointe ( llvm-config-3.2).
  7. Voyez si tout se compile correctement maintenant.

J'espère que cela fonctionne. Je n'ai testé rien de tout cela, donc utilisez-le à vos risques et périls, etc. Je suis sûr, cependant, que cela ne devrait rien faire de terrible.

EDIT: Notez que llvmet llvm-3.2sont indépendants. llvmdépend de llvm-2.9( voir ici ), tandis que llvm-3.2est séparé ( voir dépendances ici )

De plus, je ne sais pas si vous connaissez la complétion des onglets ; cela peut être utile si vous recherchez une commande mais que vous ne connaissez pas très bien le nom (par exemple, dans ce cas, cela aurait probablement montré qu'elle a llvm-configété appelée llvm-config-3.2).

andyg0808
la source
Merci beaucoup! Cela a presque fonctionné. Le seul problème est que le llvm-3.2 installé n'a pas llvm-config. Donc, quand je lance make dans Halide, il indique qu'aucun llvm n'est installé. J'ai exécuté install llvm et maintenant llvm-config --version dit 2.9. Si j'essaie d'installer llvm-3.2, il me dit que c'est la dernière version. Il semble que llvm-3.2 et llvm soient complètement indépendants.
Voir la nouvelle étape dans la réponse; vous voudrez probablement désinstaller le llvmpackage ( sudo apt-get purge llvm) avant de le faire pour vous assurer d'obtenir la bonne version. Vous pouvez toujours vérifier ce fichier que vous essayez d'exécuter en utilisant la commande which [command]. Par exemple, which llvm-configdevrait lire /usr/local/bin/llvm-config. Voir en.wikipedia.org/wiki/Which_%28Unix%29 pour plus d'informations.
andyg0808
pourquoi llvm-config n'est-il pas lié à llvm-config-3.2 comme c'est le cas pour gcc? est-ce un choix conscient?
Janus Troelsen
@JanusTroelsen Je pense que c'est un choix conscient. Comme la version de LLVM qui était disponible à partir du llvmpackage pour Ubuntu 12.04 l'était llvm-2.9, la llvm-configcommande était liée à llvm-configla même version, c'est-à-dire llvm-config-2.9. Dans Ubuntu 13.04 et 13.10, le llvmpackage installe LLVM 3.2, et je m'attendrais à ce qu'il soit ensuite configuré en llvm-config-3.2tant que llvm-config, ce qu'il fait dans Ubuntu 13.10.
andyg0808