Cómo instalar Boost en Ubuntu

489

Estoy en Ubuntu y quiero instalar Boost. Lo intenté con

sudo apt-get install boost

Pero no había tal paquete. ¿Cuál es la mejor manera de instalar Boost en Ubuntu?

k53sc
fuente

Respuestas:

850

Puedes usar el apt-getcomando (requiere sudo)

sudo apt-get install libboost-all-dev

O puedes llamar

aptitude search boost

encuentre los paquetes que necesita e instálelos con el apt-getcomando

Anton Guryanov
fuente
3
¿Tienes alguna experiencia pasada con boost?
k53sc
1
Tenía experiencia en programación con boost, pero no experiencia en instalación. Nunca lo he intentado, así que no puedo decir si es fácil de usar (pero me parece que el administrador de paquetes es la forma más fácil). Debería haber publicado esta sugerencia como comentario, pero no puedo comentar preguntas.
Anton Guryanov
72
La única desventaja de usar apt-get es que generalmente es un par de versiones detrás del último lanzamiento de impulso.
Ralf
66
Es fácil construir e instalar Boost desde las fuentes, por ejemplo anycoder.wordpress.com/2014/04/28/building-boost
Andrew Selivanov
55
¡No use la versión empaquetada de boost, ahora mismo en Ubuntu 16.04 es 1.58, y la última versión estable es 1.67.0! Vea la respuesta y mi comentario a continuación: stackoverflow.com/a/41272796/2617716
Jeb
182

Obtenga la versión de Boost que necesita. Esto es para 1.55 pero no dude en cambiar o descargarse manualmente:

wget -O boost_1_55_0.tar.gz https://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.gz/download
tar xzvf boost_1_55_0.tar.gz
cd boost_1_55_0/

Obtenga las bibliotecas requeridas, las principales son icupara boost::regexsoporte:

sudo apt-get update
sudo apt-get install build-essential g++ python-dev autotools-dev libicu-dev build-essential libbz2-dev libboost-all-dev

Configuración de arranque de Boost:

./bootstrap.sh --prefix=/usr/

Luego construya con:

./b2

y finalmente instalarlo:

sudo ./b2 install
usuario3715812
fuente
2
¿Cuál será la diferencia si usamos ./bootstrap.sh --prefix = / usr / include? Tengo la biblioteca de impulso en / usr / include. Me preguntaba que al hacer esto, ¿puedo reemplazar mi instalación anterior?
Sai
40
¿Qué es libboost-all-dev? ¿Por qué debería instalar boost antes de instalar boost?
javapowered
23
también ./b2 installdebe ejecutarse como paso final
javapowered
21
@ tbc0 Boost está en la versión 1.59 ahora, y el último PPA está en 1.55, por lo que la construcción desde la fuente es relevante
TemplateRex
55
@TemplateRex Retraigo mi comentario. Deshice mi voto negativo.
tbc0
83

Instalación de Boost en Ubuntu con un ejemplo de uso boost::array:

Instale libboost-all-dev y aptitude:

sudo apt install libboost-all-dev

sudo apt install aptitude

aptitude search boost

Luego pegue esto en un archivo C ++ llamado main.cpp:

#include <iostream>
#include <boost/array.hpp>

using namespace std;
int main(){
  boost::array<int, 4> arr = {{1,2,3,4}};
  cout << "hi" << arr[0];
  return 0;
}

Compila así:

g++ -o s main.cpp

Ejecútelo así:

./s

Programa de impresiones:

hi1
Eric Leschinski
fuente
3
Hay un error en la línea "boost :: array <int, 4> arr = {{1,2,3,4}};", debería ser "boost :: array <int, 4> arr = {1 , 2,3,4}; "
szulak
36
¿Por qué quiero correr aptitude search boost?
Leedehai
24

Obtenga la versión de Boost que necesita. Esto es para 1.55 pero no dude en cambiar o descargarse manualmente (página de descarga de Boost) :

wget -O boost_1_55_0.tar.gz https://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.gz/download
tar xzvf boost_1_55_0.tar.gz
cd boost_1_55_0 /

Obtenga las bibliotecas requeridas, las principales son icu para boost :: regex support:

sudo apt-get update
sudo apt-get install build-essential g ++ python-dev autotools-dev libicu-dev libbz2-dev 

Configuración de arranque de Boost:

./bootstrap.sh --prefix = / usr / local

Si queremos MPI, entonces debemos establecer la bandera en el archivo user-config.jam:

user_configFile = `find $ PWD -name user-config.jam`
echo "usando mpi;" >> $ user_configFile

Encuentre el número máximo de núcleos físicos:

n = `cat / proc / cpuinfo | grep "núcleos de la CPU" | uniq | awk '{print $ NF}' '

Instalar impulso en paralelo:

sudo ./b2 --with = all -j $ n install 

Asume que ya tiene la configuración / usr / local / lib . si no, puede agregarlo a su RUTA DE LA BIBLIOTECA LD :

sudo sh -c 'echo "/ usr / local / lib" >> /etc/ld.so.conf.d/local.conf'

Restablezca el ldconfig:

sudo ldconfig
Ahmed Elcheikh
fuente
1
Algunas cosas como PO Edit 2.0 requieren boost 1.6, que no está disponible en este momento a través de apt-get. Puede obtenerlo en boost.org/users/history/version_1_60_0.html y luego expandirlo. Siga las excelentes instrucciones anteriores, recordando que LD Library Path no es lo mismo que $ PATH
Andrew Killen
Cambie el enlace a HTTPS; HTTP no es seguro para descargas binarias :)
Clément
1
Comentario de una instalación reciente, para obtener la última versión: - Vaya a boost.org y descargas de " Versión actual" para obtener la última (actualmente 1.67.0: dl.bintray.com/boostorg/release/1.67.0/source / ... ) ¡Gracias!
Jeb
jaja esto arruina mi sistema para siempre. Creo que son los últimos 2 artículos.
thang
El enlace anterior a sourceforge no funciona. use dl.bintray.com/boostorg/release/1.72.0/source/… (con la versión necesaria)
Victor Gavro
18

Una actualización para la aplicación Ubuntu 10 de Windows a través del subsistema (también funciona en Ubuntu estándar):

Es posible que tenga problemas para encontrar el paquete. Si lo haces, ¡nunca temas! ¡PPA está aquí!

sudo add-apt-repository ppa:boost-latest/ppa
sudo apt-get update

Entonces corre:

sudo apt-get install libboost-all-dev
x4g0tt3nSou1x
fuente
1
OP no pidió Win10.
Adrian W
99
Estoy al tanto, publicando para aquellos (como yo) que estaban buscando una solución completa. Similar a la respuesta de Алексей Штыков
x4g0tt3nSou1x
77
@AdrianW esta respuesta no se trata de Windows 10. Se trata de Ubuntu que se ejecuta en un kernel de Windows 10 , por lo que es una solución válida para aquellos que ejecutan Ubuntu de alguna manera. Dado que la pregunta no lo limitó específicamente a Ubuntu que se ejecuta en un kernel de Linux, esta solución está bien.
Chai T. Rex
1
El repositorio ' ppa.launchpad.net/boost-latest/ppa/ubuntu xenial Release' no tiene un archivo Release.
user239558
1

En realidad, no necesita "instalar" o "compilar" nada antes de usar Boost en su proyecto. Simplemente puede descargar y extraer la biblioteca Boost a cualquier ubicación de su máquina, que generalmente es similar /usr/local/.

Cuando compila su código, puede indicarle al compilador dónde encontrar las bibliotecas -I. Por ejemplo, g++ -I /usr/local/boost_1_59_0 xxx.hpp.

jimmy.zhao
fuente
10
Esto solo funcionaría para las bibliotecas de encabezado de boost. El resto de ellos necesitaría ser construido o instalado usando un administrador de paquetes como se describe en las respuestas anteriores. Las bibliotecas de impulso que requieren construcción e instalación separadas son las siguientes: atómica, crono, contenedor, contexto, corutina, corutina2, fecha_hora, excepción, sistema de archivos, gráfico, gráfico_paralelo, iostreams, configuración regional, registro, matemáticas, mpi, opciones de programa, python, aleatorio , expresiones regulares, serialización, señales, sistema, prueba, hilo, temporizador, borrado de tipo, onda.
Elias Kouskoumvekakis
Incluso reparar esta solución siguiendo las instrucciones adicionales de Elias Kouskoumvekakis sería una mala idea (a menos que tenga una buena razón), ya que los administradores de paquetes agregan la capacidad de actualizar Boost a versiones más nuevas muy fácilmente (en Ubuntu, solo sudo apt update; sudo apt upgradepara actualizar todos sus paquetes a las últimas versiones en los repositorios) si encuentra el repositorio de paquetes apropiado para Boost y si lo desea, puede eliminar Boost del sistema con mucha facilidad. El enfoque manual hace que esas tareas sean más difíciles, por lo que necesita una buena razón para omitir los beneficios de un administrador de paquetes.
Chai T. Rex
1
Además, la instalación sin un administrador de paquetes está mejor cubierta en una respuesta anterior , que incluye las instrucciones de construcción necesarias.
Chai T. Rex