Boost-1.81.0

Introduction à Boost

Boost offre un ensemble de bibliothèques sources libres, revues par les pairs et portables en C++. Il inclut des bibliothèques d'algèbre linéaire, de génération de nombres pseudo-aléatoires, de multithreading, de traitement d'images, d'expressions régulières et de tests d'unités.

This package is known to build and work properly using an LFS 11.3 platform.

Informations sur le paquet

Dépendances de Boost

Recommandées

Facultatives

ICU-72.1 et Open MPI

Notes utilisateur : https://wiki.linuxfromscratch.org/blfs/wiki/boost

Installation de Boost

Un changement dans cette version de boost casse les quelques paquets qui utilisent le module phoenix lors de la compilation avec la version actuelle de GCC. Dans BLFS, cela affecte LibreOffice-7.5.0.3. Corrigez cela avec la commande suivante :

sed -i '/#include.*phoenix.*tuple.hpp.*/d' \
  boost/phoenix/stl.hpp

On peut construire ce paquet avec plusieurs taches en parallèle. Dans les instructions ci-dessous, <N> correspond au nombre de taches. Installez Boost en exécutant les commandes suivantes :

./bootstrap.sh --prefix=/usr --with-python=python3 &&
./b2 stage -j<N> threading=multi link=shared

Pour lancer les tests de régression de Boost.Build, lancez pushd tools/build/test; python3 test_all.py; popd. Avec python-3.10.x, les 168 tests devraient tous réussir. Avec Python-3.11.2, 20 tests échouent pour des raisons indéterminées.

Pour lancer tous les tests de régression de chaque bibliothèque, tapez pushd status; ../b2; popd. Quelques tests peuvent échouer. Ils prennent beaucoup de temps (plus de 119 SBU avec -j4) et utilisent un espace disque volumineux (46 Go). Vous devriez utiliser le paramètre -jN pour les accélérer.

[Note]

Note

Boost installe plusieurs répertoires versionnés dans /usr/lib/cmake. Si une nouvelle version de Boost est installée par-dessus une version précédente, les anciens répertoires cmake doivent être explicitement supprimés. Pour cela, exécutez en tant qu'utilisateur root :

rm -rf /usr/lib/cmake/[Bb]oost*

avant d'installer la nouvelle version.

Maintenant, en tant qu'utilisateur root :

./b2 install threading=multi link=shared

Explication des commandes

sed -i '/#include ... : cela supprime l'inclusion de boost/phoenix/stl/tuple.hpp dans cette bibliothèque d'en-têtes, ce qui permet aux applications qui l'utilisent de se lier avec un C++ récent. Cela pourrait aussi se faire en modifiant /usr/include/boost/phoenix/stl.hpp si cette version de boost a déjà été installée sans ce sed.

threading=multi : ce paramètre assure que Boost soit bien construit avec le support du multithreading.

link=shared : Ce paramètre fait que seules les bibliothèques partagées sont créées, excepté pour libboost_exception et libboost_test_exec_monitor qui sont créés statiquement. La plupart des gens n'auront pas besoin des bibliothèques statiques et la plupart des programmes utilisant Boost se servent uniquement des en-têtes. Vous pouvez omettre ce paramètre si vous avez besoin des bibliothèques statiques.

--with-python=python3  ce paramètre s'assure que Python 3 est utilisé si Python 2 est installé.

-jN : Ce paramètre peut être utilisé dans la ligne de commande b2, pour lancer N processus en parallèle.

Contenu

Programmes installés: Aucun
Bibliothèques installées: libboost_atomic.so, libboost_chrono.so, libboost_container.so, libboost_context.so, libboost_contract.so, libboost_coroutine.so, libboost_date_time.so, libboost_exception.a, libboost_fiber.so, libboost_filesystem.so, libboost_graph.so, libboost_iostreams.so, libboost_json.so, libboost_locale.so, libboost_log_setup.so, libboost_log.so, libboost_math_c99.so, libboost_math_c99f.so, libboost_math_c99l.so, libboost_math_tr1.so, libboost_math_tr1f.so, libboost_math_tr1l.so, libboost_nowide.so, libboost_numpy39.so, libboost_prg_exec_monitor.so, libboost_program_options.so, libboost_python311.so, libboost_random.so, libboost_regex.so, libboost_serialization.so, libboost_stacktrace_addr2line.so, libboost_stacktrace_basic.so, libboost_stacktrace_noop.so, libboost_system.so, libboost_test_exec_monitor.a, libboost_thread.so, libboost_timer.so, libboost_type_erasure.so, libboost_unit_test_framework.so, libboost_wave.so et libboost_wserialization.so
Répertoire installé: /usr/include/boost