| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| prog:clang [2023/05/10 10:23] – [Utilitaires] : nettoyage root | prog:clang [2025/09/01 11:47] (Version actuelle) – [Ubuntu] mise à jour de la procédure d'installation avec le nouveau format sources.list root |
|---|
| =====Installation===== | =====Installation===== |
| |
| | ====Compilation==== |
| | |
| | Pour faire une compilation plus rapide, ajouter : |
| | |
| | Dossier source : ''llvm-project\llvm''. |
| | |
| | ''-DLLVM_TARGETS_TO_BUILD=X86'' pour compiler pour x86 et x64. |
| | |
| | ''-DCMAKE_INSTALL_PREFIX=install'' car ce dossier a besoin d'être accessible en écriture pendant la compilation. |
| | |
| | ''%%-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra"%%''. ''clang-tools-extra'' est nécessaire pour ''ClangAST''. |
| | |
| | ''%%-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi"%%'' |
| | |
| | ''-DLLVM_PARALLEL_LINK_JOBS=2'' pour éviter que le link plante. |
| | |
| | ''-DLLVM_INCLUDE_TESTS:BOOL=OFF -DCLANG_INCLUDE_TESTS:BOOL=OFF -DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF -DLLVM_INCLUDE_EXAMPLES:BOOL=OFF -DLLVM_INCLUDE_UTILS:BOOL=OFF -DLLVM_INCLUDE_DOCS:BOOL=OFF -DLLVM_BUILD_UTILS:BOOL=OFF'' |
| ====Ubuntu==== | ====Ubuntu==== |
| |
| |
| <code bash> | <code bash> |
| cd /usr/share/keyrings | wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc |
| sudo wget https://apt.llvm.org/llvm-snapshot.gpg.key | |
| </code> | </code> |
| |
| [[https://askubuntu.com/questions/1403556/key-is-stored-in-legacy-trusted-gpg-keyring-after-ubuntu-22-04-update|Key is stored in legacy trusted.gpg keyring after Ubuntu 22.04 update]] {{ :prog:clang:apt_-_key_is_stored_in_legacy_trusted.gpg_keyring_after_ubuntu_22.04_update_-_ask_ubuntu_18_10_2022_15_03_19_.html |Archive du 21/04/2022 le 18/10/2022}} | [[https://askubuntu.com/questions/1403556/key-is-stored-in-legacy-trusted-gpg-keyring-after-ubuntu-22-04-update|Key is stored in legacy trusted.gpg keyring after Ubuntu 22.04 update]] {{ :prog:clang:apt_-_key_is_stored_in_legacy_trusted.gpg_keyring_after_ubuntu_22.04_update_-_ask_ubuntu_18_10_2022_15_03_19_.html |Archive du 21/04/2022 le 18/10/2022}} |
| |
| Ajouter à ''/etc/apt/sources.list'' : | Créer un fichier ''/etc/apt/sources.list.d/llvm.sources'' : |
| |
| <code> | <code> |
| deb [signed-by=/usr/share/keyrings/llvm-snapshot.gpg.key] http://apt.llvm.org/unstable/ llvm-toolchain main | Enabled: yes |
| deb-src [signed-by=/usr/share/keyrings/llvm-snapshot.gpg.key] http://apt.llvm.org/unstable/ llvm-toolchain main | Types: deb deb-src |
| # 15 | URIs: http://apt.llvm.org/noble/ |
| deb [signed-by=/usr/share/keyrings/llvm-snapshot.gpg.key] http://apt.llvm.org/unstable/ llvm-toolchain-15 main | Suites: llvm-toolchain-noble-21 |
| deb-src [signed-by=/usr/share/keyrings/llvm-snapshot.gpg.key] http://apt.llvm.org/unstable/ llvm-toolchain-15 main | Components: main |
| | Signed-By: /etc/apt/trusted.gpg.d/apt.llvm.org.asc |
| </code> | </code> |
| |
| La première paire de lignes est globale et doit toujours être ajoutée. | |
| |
| La seconde paire est pour ajouter la version précise. | |
| |
| Puis faire un ''apt update'' / ''apt upgrade''. | Puis faire un ''apt update'' / ''apt upgrade''. |
| [[https://aras-p.info/blog/2019/01/16/time-trace-timeline-flame-chart-profiler-for-Clang/|time-trace: timeline / flame chart profiler for Clang]] {{ :prog:clang:time-trace_timeline_flame_chart_profiler_for_clang_aras_website_2019-11-11_18_52_11_.html |Archive du 16/01/2019 le 11/11/2019}} | [[https://aras-p.info/blog/2019/01/16/time-trace-timeline-flame-chart-profiler-for-Clang/|time-trace: timeline / flame chart profiler for Clang]] {{ :prog:clang:time-trace_timeline_flame_chart_profiler_for_clang_aras_website_2019-11-11_18_52_11_.html |Archive du 16/01/2019 le 11/11/2019}} |
| |
| | =====Erreurs===== |
| | |
| | * ''fatal error: 'iostream' file not found'' |
| | |
| | Les librairies standard ne sont pas trouvées. On peut commencer par vérifier si le paquet ''build-essential'' est installé. |
| | |
| | Ensuite, les librairies standard ne sont pas forcément celles du gcc par défaut qui sont utilisées. |
| | |
| | Lancer ''clang -v'' pour trouver laquelle est en cours (''Selected GCC installation''). |
| | |
| | <code bash> |
| | $ clang -v |
| | </code> |
| | |
| | <code> |
| | Ubuntu clang version 14.0.6 |
| | Target: x86_64-pc-linux-gnu |
| | Thread model: posix |
| | InstalledDir: /usr/lib/llvm-14/bin |
| | Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10 |
| | Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11 |
| | Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12 |
| | Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9 |
| | Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/12 |
| | Candidate multilib: .;@m64 |
| | Selected multilib: .;@m64 |
| | </code> |
| | |
| | <code bash> |
| | $ gcc -v |
| | </code> |
| | |
| | <code> |
| | gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04) |
| | </code> |
| | |
| | Il faut donc installer les entêtes de gcc-12. |
| | |
| | <code bash> |
| | sudo apt install libstdc++-12-dev |
| | </code> |
| |
| | [[https://stackoverflow.com/questions/26333823/clang-doesnt-see-basic-headers|Clang doesn't see basic headers]] {{ :prog:clang:c_-_clang_doesn_t_see_basic_headers_-_stack_overflow_11_05_2023_11_53_28_.html |Archive du 13/10/2014 le 11/05/2023}} |