web-dev-qa-db-fra.com

Comment installer clang pour YouCompleteMe?

Système d'exploitation: Ubuntu 18.04

Il y a déjà quelques articles sur la façon d'installer clang dans Ubuntu, mais beaucoup d'entre eux sont obsolètes, et ma question est spécifique à l'installation de clang dans le cadre de l'installation de YouCompleteMe .

Tout d'abord, en suivant les indications de cette réponse et de le lien fournies ici, j'ai exécuté ces commandes:

$ wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|Sudo apt-key add -
$ Sudo apt-get update && Sudo apt-get upgrade
$ Sudo apt-add-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-8 main"

J'ai ensuite couru $ vim /etc/apt/sources.list et pourrait vérifier que les nouvelles lignes correspondant à llvm ont été ajoutées, comme prévu. J'ai ensuite couru:

$ apt-get install clang-8 lldb-8 lld-8 --print-uris

pour obtenir les informations sur l'espace disque nécessaire, qui dans ce cas était:

The following NEW packages will be installed:
binfmt-support clang-8 lib32gcc1 lib32stdc++6 libc6-i386 libclang- 
common-8-dev libclang1-8 libffi-dev liblldb-8 libobjc-7-dev libobjc4 
libomp-8-dev libomp5-8 libpfm4 libpython-stdlib lld-8 lldb-8
llvm-8 llvm-8-dev llvm-8-runtime python python-lldb-8 python-minimal 
python-six python2.7 python2.7-minimal
0 upgraded, 26 newly installed, 0 to remove and 0 not upgraded.
Need to get 71,4 MB of archives.
After this operation, 412 MB of additional disk space will be used.

Maintenant, avant d'installer réellement ces paquets, j'ai relu le fichier README de YouCompleteMe , et j'ai remarqué qu'il dit:

Vous ne pouvez utiliser le système libclang ou clangd que si vous êtes sûr qu'il s'agit de la version 8.0.0 ou supérieure, sinon ne le faites pas. Même si c'est le cas, nous vous recommandons d'utiliser les binaires officiels de llvm.org si possible. Assurez-vous de télécharger le fichier d'archive correct pour votre système d'exploitation.
Nous recommandons FORTEMENT CONTRE l'utilisation du système libclang ou clangd au lieu des binaires compilés en amont. Des choses aléatoires peuvent se casser. Épargnez-vous les tracas et utilisez le libclang ou clangd pré-construit en amont.

Je suppose que quand ils disent "le système libclang", ils font référence au libclang que j'allais installer en utilisant apt-get (Est-ce à cela qu'ils se réfèrent réellement? Si quelqu'un sait ce qu'il entend par "système libclang", faites-le moi savoir). J'ai donc décidé de suivre le lien LLVM fourni par eux . Une fois sur place, j'ai cliqué sur "Ubuntu 18.04" dans la section "Binaires pré-construits". Ensuite, le téléchargement du tar.xz le fichier a démarré, puis j'ai exécuté:

$ tar -xJf clang*.tar.xz

Et ce post implique que je devrais exécuter:

$ cd clang*
$ Sudo cp -R * /usr/local/

Alors maintenant, je vois que j'ai deux façons d'installer clang: par apt-get, et en déballant le binaire.

YouCompleteMe demande-t-il une manière inhabituelle d'installer clang?
Quelle est la bonne façon d'installer clang dans Ubuntu 18.04?

3
evaristegd

Je suis sûr que le système libclang et clangd sont la version 8.0.0 ou supérieure dans Ubuntu 18.04.

clangd est fourni par clang-tools-8 du référentiel de l'univers dans Ubuntu 18.04. Clang 8 et libclang sont fournis par clang-8 et libclang1-8 oackages dans Ubuntu 18.04. Pour installer tous ces packages, ouvrez le terminal et tapez:

Sudo apt install clang-8 libclang1-8 clang-tools-8  

J'ai également trouvé les binaires officiels de llvm.org qui est un fichier de 325 Mo nommé clang + llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.gz. Il contient les fichiers binaires compilés en amont mentionnés dans le fichier README de YouCompleteMe. Le téléchargement et l'installation manuels de 325 Mo de fichiers me semblent beaucoup de travail pour installer un moteur de complétion de code pour Vim qui n'est qu'un téléchargement de 1152 Ko et 2852 Ko installé pour vim lui-même, j'essaierais donc d'installer YouCompleteMe avec les packages de référentiel Ubuntu en premier et de vérifier si l'utilisation de packages système rompt quoi que ce soit dans YouCompleteMe.

3
karel