Boost-1.81.0

Introdução a Boost

O Boost fornece um conjunto de bibliotecas gratuitas de fonte C++ portáteis revisadas por pares. Inclui bibliotecas para álgebra linear, geração de números pseudo-aleatórios, multi encadeamento, processamento de imagens, expressões regulares e testes de unidade.

Esse pacote é conhecido por construir e funcionar adequadamente usando uma plataforma LFS 11.3.

Informação do Pacote

Dependências de Boost

Recomendada

Opcionais

ICU-72.1 e Open MPI

Observações de Usuário(a): https://wiki.linuxfromscratch.org/blfs/wiki/boost

Instalação de Boost

Uma mudança nesta versão do boost quebra os poucos pacotes que usam o módulo phoenix quando compilados com o GCC atual. No BLFS, isso afeta LibreOffice-7.5.0.3. Corrija isso com o seguinte comando:

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

Esse pacote pode ser construído com vários trabalhos executando em paralelo. Nas instruções abaixo, <N> representa o número de trabalhos. Instale o Boost executando os seguintes comandos:

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

Para executar o teste de regressão do Boost.Build, emita pushd tools/build/test; python3 test_all.py; popd. Com python-3.10.x, todos os 168 testes deveriam passar. Com Python-3.11.2, 20 testes falham por razões indeterminadas.

Para executar cada um dos testes de regressão da biblioteca, emita pushd status; ../b2; popd. Uns poucos testes possivelmente falhem. Eles tomam um tempo muito longo (mais que 119 UPC em -j4) e usam uma quantidade muito grande de espaço em disco (46 GB). Você deveria usar a chave -jN para acelerá-los.

[Nota]

Nota

O Boost instala muitos diretórios versionados em /usr/lib/cmake. Se uma nova versão do Boost for instalada sobre uma versão anterior, [então] os diretórios do cmake mais antigos precisam ser explicitamente removidos. Para fazer isso, execute como o(a) usuário(a) root:

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

antes de instalar a nova versão.

Agora, como o(a) usuário(a) root:

./b2 install threading=multi link=shared

Explicações do Comando

sed -i '/#include ...: Isso remove a inclusão de boost/phoenix/stl/tuple.hpp dessa biblioteca somente de cabeçalho, permitindo que aplicativos que a usam se vincularem usando C++ recente. Uma alternativa é a de editar /usr/include/boost/phoenix/stl.hpp se essa versão do "boost" já tiver sido instalada sem esse sed.

threading=multi: Esse parâmetro garante que Boost seja construído com suporte a multi encadeamento.

link=shared: Esse parâmetro garante que somente bibliotecas compartilhadas sejam criadas, exceto "libboost_exception" e "libboost_test_exec_monitor" que são criadas como estáticas. A maioria das pessoas não precisará das bibliotecas estáticas, e a maioria dos aplicativos que usam o Boost usa somente os cabeçalhos. Omita esse parâmetro se precisar das bibliotecas estáticas.

--with-python=python3: Essa chave garante que o "Python3" seja usado se o "Python2" estiver instalado.

-jN: Essa chave pode ser adicionada às linhas de comando b2, para executar até N processos em paralelo.

Conteúdo

Aplicativos Instalados: Nenhum
Bibliotecas Instaladas: 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 e libboost_wserialization.so
Diretório Instalado: /usr/include/boost