LLVM-3.7.1

Introduction à LLVM

Le paquet LLVM contient une collection de compilateur modulaire et réutilisable et des technologies de chaînes d'outils. Le cœur des bibliothèques Low Level Virtual Machine (LLVM) fournit un optimiseur moderne indépendant de la source et de la cible, ainsi que le support de génération de code pour beaucoup des processeurs populaires (ainsi que quelques autres moins courants !). Ces bibliothèques sont construites autour d'une représentation du code connu sous le nom de représentation LLVM intermédiaire ("LLVM IR").

Les paquets facultatifs Clang et Compiler RT fournissent de nouvelles interfaces C, C++, Objective C et Objective C++ et des bibliothèques d'exécution pour LLVM.

[Note]

Note

Ce paquet active un bogue dans GCC-4.9.0 ou un GCC-4.9.1 non corrigé. Pour construire ce paquet, GCC doit être mis à jour si vous avez l'une de ces versions. Voir GCC-5.3.0 pour les instructions d'installation de gcc.

Ce paquet est connu pour se construire correctement sur une plateforme LFS-7.9.

Informations sur le paquet

  • Téléchargement (HTTP) : http://llvm.org/releases/3.7.1/llvm-3.7.1.src.tar.xz

  • Téléchargement (FTP) :

  • Somme de contrôle MD5 du téléchargement : bf8b3a2c79e61212c5409041dfdbd319

  • Taille du téléchargement : 14 Mo

  • Estimation de l'espace disque requis : 1.6 Go (avec Clang et les tests)

  • Estimation du temps de construction : 13 SBU (avec Clang, les tests et parallélisme = 4)

Téléchargements facultatifs

Clang

Compiler RT

Dépendances de LLVM

Recommandées

Facultatives

CMake-3.4.3, Doxygen-1.8.11, Graphviz-2.38.0, libxml2-2.9.3, texlive-20150521 (or install-tl-unx), Valgrind-3.11.0, Zip-3.0, OCaml et Sphinx

Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/llvm

Installation de LLVM

Si vous avez téléchargé les paquets facultatifs, installez-les dans l'arborescence des sources :

tar -xf ../cfe-3.7.1.src.tar.xz -C tools &&
tar -xf ../compiler-rt-3.7.1.src.tar.xz -C projects &&

mv tools/cfe-3.7.1.src tools/clang &&
mv projects/compiler-rt-3.7.1.src projects/compiler-rt

La bibliothèque doit être corrigée pour les installations 32 bits :

sed -r "/ifeq.*CompilerTargetArch/s#i386#i686#g" \
    -i projects/compiler-rt/make/platform/clang_linux.mk

Installez LLVM en lançant les commandes suivantes :

sed -e "s:/docs/llvm:/share/doc/llvm-3.7.1:" \
    -i Makefile.config.in &&

mkdir -v build &&
cd       build &&

CC=gcc CXX=g++                          \
../configure --prefix=/usr              \
             --datarootdir=/usr/share   \
             --sysconfdir=/etc          \
             --enable-libffi            \
             --enable-optimized         \
             --enable-shared            \
             --enable-targets=host,r600 \
             --disable-assertions       \
             --docdir=/usr/share/doc/llvm-3.7.1 &&
make

Si vous avez installé Sphinx et que vous souhaitez générer les pages de manuel, tapez la commande suivante :

make -C ../docs -f Makefile.sphinx man

Pour testez les résultats, tapez : make -k check-all. Quelques tests échouent pour des raisons inconnues.

Maintenant, en tant qu'utilisateur root :

make install &&

for file in /usr/lib/lib{clang,LLVM,LTO}*.a
do
  test -f $file && chmod -v 644 $file
done
unset file

Si vous avez installé Python-2.7.11 et avez construit Clang, installez Clang Analyzer en lançant la commande suivante en tant qu'utilisateur root :

install -v -dm755 /usr/lib/clang-analyzer &&

for prog in scan-build scan-view
do
  cp -rfv ../tools/clang/tools/$prog /usr/lib/clang-analyzer/ &&
  ln -sfv ../lib/clang-analyzer/$prog/$prog /usr/bin/
done
unset prog &&

ln -sfv /usr/bin/clang \
        /usr/lib/clang-analyzer/scan-build/ &&
mv -v   /usr/lib/clang-analyzer/scan-build/scan-build.1 \
        /usr/share/man/man1/

si vous avez construit les pages de manuel, installez les en lançant la commande suivant en tant qu'utilisateur root :

install -v -m644 ../docs/_build/man/* /usr/share/man/man1/

Explication des commandes

sed -e ... Makefile.config.in : Ce sed corrige l'emplacement d'installation de la documentation.

--enable-libffi : Ce paramètre initialise LLVM pour utiliser libffi. Effacez-le si vous n'avez pas installé libffi.

--enable-optimized : Ce paramètre active les optimisations du compilateur pour augmenter la vitesse du code et diminuer sa taille.

--enable-shared : Ce paramètre active la construction des bibliothèques partagées de LLVM qui contiennent toutes les bibliothèques statiques liées dans une seule bibliothèque

--enable-targets=host,r600 : Ce paramètre active la construction des mêmes cibles que l'hôte. et aussi pour le GPU r600 AMD GPU utilisé par les pilotes r600 de Mesa et radeonsi. Par défaut tout est activé. Vous pouvez indiquer une liste de cibles séparées par des virgules. Les cibles valides sont : host, x86, x86_64, sparc, powerpc, arm64, arm, aarch64, mips, hexagon, xcore, msp430, nvptx, systemz, r600, amdgpu (équivalent à r600), bpf, wasm et cpp.

--disable-assertions : Désactive quelques vérifications de compilation non utiles sur un système de production.

Contenu

Programmes installés: bugpoint, c-index-test, clang, clang++ (lien symbolique), count, FileCheck, clang-check, clang-format, clang-tblgen, llc, lli, lli-child-target, llvm-ar, llvm-as, llvm-bcanalyzer, llvm-config, llvm-cov, llvm-cxxdump, llvm-diff, llvm-dis, llvm-dsymutil, llvm-dwarfdump, llvm-extract, llvm-link, llvm-mc, llvm-mcmarkup, llvm-nm, llvm-objdump, llvm-pdbdump, llvm-profdata, llvm-ranlib (lien symbolique), llvm-readobj, llvm-rtdyld, llvm-size, llvm-stress, llvm-symbolizer, llvm-tblgen, macho-dump, not, obj2yaml, opt, scan-build (lien symbolique), scan-view (lien symbolique), verify-uselistorder et yaml2obj
Bibliothèques installées: BugpointPasses.so, libclang.so, libLLVM-3.7.1.so, libLTO.so, LLVMHello.so et de nombreuses bibliothèques statiques dans /usr/lib
Répertoires installés: /usr/include/{clang,clang-c,llvm,llvm-c}, /usr/lib/{clang,clang-analyzer} et /usr/share/{doc/llvm-3.7.1,llvm}

Descriptions courtes

bugpoint

est l'outil de réduction de cas de test automatique.

clang

est le compilateur Clang C, C++ et Objective-C.

llc

est le compilateur statique LLVM.

lli

est utilisé pour exécuter directement des programmes en bytecode LLVM.

llvm-ar

est le créateur d'archive de LLVM.

llvm-as

est l'assembleur de LLVM.

llvm-bcanalyzer

est l'analyseur de bytecode LLVM.

llvm-config

affiche les options de compilation de LLVM.

llvm-cov

est utilisé pour émettre des informations de couverture.

llvm-cxxdump

est utilisé pour l'enregistreur de donnée C++ ABI.

llvm-diff

est le diff de LLVM.

llvm-dis

est le désassembleur LLVM.

llvm-dsymutil

outil utilisé pour manipuler les fichiers de symboles de débogage DWARF archivés, compatible avec la commande Darwin dsymutil.

llvm-extract

est utilisé pour extraire une fonction depuis un module LLVM.

llvm-link

est le linker LLVM.

llvm-nm

est utilisé pour lister les tables de symboles des fichiers objets et bytecode LLVM.

llvm-pdbdump

est utilisé comme un enregistreur PDB.

llvm-ranlib

est utilisé pour générer un index pour les archives LLVM.

llvm-stress

est utilisé pour générer des fichier .ll aléatoires.

llvm-tblgen

est le générateur de code C++ depuis la description de la cible de LLVM.

obj2yaml

prends un fichier objet, et produit une représentation YAML de ce fichier.

opt

est l'optimiseur LLVM.

scan-build

est un script Perl qui invoque l'analyseur statique Clang.

yaml2obj

prend une représentation YAML d'un fichier objet et le convertit en un fichier binaire.

libLLVM-3.7.1.so

contient les fonctions de l'API de LLVM.

Last updated on 2016-02-22 23:52:02 +0100