Instalación selectiva de bibliotecas boost específicas en Linux/Debian

4 minutos de lectura

avatar de usuario de c_drik
c_drik

Con la abundancia de bibliotecas de Boost disponibles, parece excesivo instalarlas todas cuando solo se necesitan unas pocas, dado que el tamaño total es de más de 750 MB desempaquetado. ¿Hay alguna forma de seleccionar e instalar una biblioteca específica en su lugar?

No pude encontrar nada en la documentación de boost, excepto el utilidad bcp lo que supone que boost está instalado.

Las bibliotecas se empaquetan por separado para Debian, Ubuntu, Arch, Conan, CMake, etc.

Por ejemplo, haciendo apt-cache search revela:

libboost-filesystem-dev - filesystem operations (portable paths, iteration over directories, etc) in C++ (default version)
libboost-program-options-dev - program options library for C++ (default version)
libboost-regex-dev - regular expression library for C++ (default version)
libboost-system-dev - Operating system (e.g. diagnostics support) library (default version)
libboost-thread-dev - portable C++ multi-threading (default version)
libboost-all-dev - Boost C++ Libraries development files (ALL) (default version)
libboost-atomic-dev - atomic data types, operations, and memory ordering constraints (default version)
libboost-chrono-dev - C++ representation of time duration, time point, and clocks (default version)
libboost-container-dev - C++ library that implements several well-known containers - dev files (default version)
libboost-context-dev - provides a sort of cooperative multitasking on a single thread (default version)
libboost-contract-dev - Contract library for C++ - dev files (default version)
libboost-coroutine-dev - provides a sort of cooperative multitasking on a single thread (default version)
libboost-date-time-dev - set of date-time libraries based on generic programming concepts (default version)
libboost-exception-dev - library to help write exceptions and handlers (default version)
libboost-fiber-dev - cooperatively-scheduled micro-/userland-threads (default version)
libboost-graph-dev - generic graph components and algorithms in C++ (default version)
libboost-graph-parallel-dev - generic graph components and algorithms in C++ (default version)
libboost-iostreams-dev - Boost.Iostreams Library development files (default version)
libboost-locale-dev - C++ facilities for localization (default version)
libboost-log-dev - C++ logging library (default version)
libboost-math-dev - Boost.Math Library development files (default version)
libboost-mpi-dev - C++ interface to the Message Passing Interface (MPI) (default version)
libboost-mpi-python-dev - C++ interface to the Message Passing Interface (MPI), Python Bindings (default version)
libboost-nowide-dev - Standard library functions with UTF-8 API on Windows development files (default version)
libboost-numpy-dev - Boost.Python NumPy extensions development files (default version)
libboost-python-dev - Boost.Python Library development files (default version)
libboost-random-dev - Boost Random Number Library (default version)
libboost-serialization-dev - serialization library for C++ (default version)
libboost-stacktrace-dev - library to capture and print stack traces - development files (default version)
libboost-test-dev - components for writing and executing test suites (default version)
libboost-timer-dev - C++ wall clock and CPU process timers (default version)
libboost-tools-dev - Boost C++ Libraries development tools (default version)
libboost-type-erasure-dev - C++ runtime polymorphism based on concepts (default version)
libboost-wave-dev - C99/C++ preprocessor library (default version)

Por supuesto que habrá interdependencias. P.ej

apt-cache depends libboost-filesystem1.74-dev 

muestra que depende de Boost System. Tenga en cuenta que también depende de libstdc++ (transitivamente) a través de libboostx.yy-devlo cual también sugiere otras bibliotecas boost, pero no se requiere ninguna.

BCP es una herramienta destinada exclusivamente a reducir la encabezados de impulso recopilados que en la práctica rara vez tiene algún uso, porque los encabezados en sí mismos no son tan grandes e históricamente no se pueden omitir fácilmente. Aunque a lo largo de los años, Boost ha logrado reducir las dependencias innecesarias entre bibliotecas, por lo que es posible que tenga más efecto en estos días para su subconjunto específico de bibliotecas.

  • Como pregunta subsidiaria, ¿sabe cuál de estas bibliotecas contiene boost.asio?

    – c_drik

    3 de febrero a las 7:35

  • Sí. Ninguno, porque Asio es solo de cabecera. Solo depende del sistema, que, dado que las versiones recientes también son/pueden ser solo de encabezado (creo que lo es, ¿de forma predeterminada en las versiones recientes?)

    – seje

    3 feb a las 15:51

  • (Supongo que técnicamente en Debian solo necesita libboost-dev, que sugiere todos los paquetes de biblioteca compilados por razones obvias, pero no se requiere ninguno. Parece instalar los encabezados y algunas herramientas de compilación como bjam, probablemente soporte cmake. Para las bibliotecas de solo encabezado, generalmente solo descargo la bola de alquitrán en su lugar sin necesidad de un paso de compilación. convenientemente también le ofrece la versión más reciente).

    – seje

    3 de febrero a las 15:54


¿Ha sido útil esta solución?