Versión de 64 bits de Boost para Windows de 64 bits

119

¿Existe una versión de la biblioteca Boost de 64 bits para VS2008? ¿O tengo que compilar uno yo mismo? si es así, ¿alguien tiene experiencia con él?

ra170
fuente

Respuestas:

226

Como respuesta breve:

bjam --toolset=msvc-9.0 address-model=64 --build-type=complete

Como respuesta más larga, aquí están mis notas de compilación para tener bibliotecas de refuerzo VS .NET 2008 de 32 bits y 64 bits en la misma jerarquía (que sospecho que es un caso de uso común):

  1. Construye los binarios de win32

    bjam --toolset=msvc-9.0 --build-type=complete stage
  2. Cree el directorio lib \ win32

  3. Mueva el contenido de stage \ lib a lib \ win32
  4. Elimina los directorios bin.v2 y stage
  5. Construya los binarios x64

    bjam --toolset=msvc-9.0 address-model=64 --build-type=complete stage
  6. Crea el directorio lib \ x64

  7. Mueva el contenido de stage \ lib a lib \ x64
  8. Elimina los directorios bin.v2 y stage
Adrian Conlon
fuente
25
También puede especificar el directorio de escenario, lo que elimina la necesidad de copiar las bibliotecas resultantes en: bjam --toolset = msvc-9.0 address-model = 64 --build-type = complete --stagedir = lib \ x64 stage
hkaiser
8
que es el escenario ?
Ramadheer Singh
16
Desafortunadamente, para construir 64, address-model = 64 no funciona. Debe tener su ruta apuntando a Visual Studio \ bin \ amd64 \ cl.exe. De lo contrario, crea una versión de 32 bits. Para hacer esto, puede iniciar el símbolo del sistema del SDK de Microsoft y usar "setenv / Release / x64" que redefine todas las rutas.
Budric
2
@Budric, ¿estás seguro? Parece que me ha funcionado y esto indica explícitamente proporcionar una ruta al compilador de 32 bits incluso cuando se construye en 64 bits.
Maciej Gryka
4
Si necesita compilar versiones de 32 y 64 bits, también es posible utilizar el parámetro stagedir: "bjam --stagedir =. / Lib_64bit address-model = 64 toolset = msvc threading = multi" y "bjam --stagedir =. / lib toolset = msvc threading = multi "
Odin
63

Tengo los binarios construidos en mi sitio: http://boost.teeks99.com

Editar 2013-05-13: Mis compilaciones ahora están disponibles (a partir de la 1.53) directamente desde la página de sourceforge .

teeks99
fuente
5
Genial que proporcione esto, ya que BoostPRo (que proporciona binarios para las bibliotecas de Boost) no ofrece versiones x64. ¡Gracias!
CharlesB
¿Alguna posibilidad de que pueda publicar binarios de VS2015 (VC ++ 14)? Eso sería muy apreciado.
Russell Greene
1
Los binarios msvc-14.0 estarán en la versión 1.59 que saldrá en un par de semanas.
teeks99
22

ACTUALIZACIÓN (19.09.2017): se agregaron líneas de script para VS2017. Tenga en cuenta que Boost admite el compilador VS2017 de una determinada versión anterior. Usé la última versión (1.65.1).

Usé estos scripts para crear boost para plataformas x64 y x86, lib y dll, depurar y lanzar para VS2017, VS2015 y VS2013:

md stage\VS2017\x64
md stage\VS2015\x64
md stage\VS2013\x64    

b2 --stagedir=./stage/VS2017/x64 address-model=64 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2017/x64 address-model=64 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=release  

b2 --stagedir=./stage/VS2015/x64 address-model=64 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2015/x64 address-model=64 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=release

b2 --stagedir=./stage/VS2013/x64 address-model=64 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2013/x64 address-model=64 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=release


md stage\VS2017\win32
md stage\VS2015\win32
md stage\VS2013\win32

b2 --stagedir=./stage/VS2017/win32 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2017/win32 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=release

b2 --stagedir=./stage/VS2015/win32 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2015/win32 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=release

b2 --stagedir=./stage/VS2013/win32 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2013/win32 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=release

pause

Puede crear un .batarchivo y ejecutarlo para crear sus binarios de impulso.

mtb
fuente
12

En este momento, los binarios de 64 bits proporcionados por teeks99 (ver otra respuesta) parecen ser los únicos binarios de 64 bits disponibles. Durante un tiempo, BoostPro también proporcionó binarios de 64 bits, pero a partir de la 1.51 parecen estar fuera de servicio.

Entonces, volvemos a dos opciones: los binarios teeks99 o la creación de los suyos propios.

La mayor parte de la información que necesitaba para crear la mía propia estaba aquí: https://stackoverflow.com/a/2655683/613288

Lo único que faltaba era cómo hacer que esto funcionara con la versión gratuita de Visual Studio 2010 Express. Encontré esa parte faltante en otro lugar, y después de alguna personalización, la receta final que usé para mi compilación de los binarios boost 1.49.0 fue:

Inicie Visual C ++ y, desde el menú Herramientas, inicie el símbolo del sistema de Visual Studio.

En la ventana de la consola, haga lo siguiente:

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\setenv.cmd"  /Release  /x64

y luego en el directorio boost:

bootstrap.bat
b2  -a  -sBZIP2_SOURCE="C:\bzip2-1.0.6"   -sZLIB_SOURCE="C:\zlib-1.2.5"   --toolset=msvc-10.0  architecture=x86  address-model=64  link=static  --with-date_time  --with-filesystem  --with-serialization  --with-test  --with-thread  --with-system  --with-regex  --with-iostreams  stage

El último comando está personalizado para lo que necesitaba (solo algunas bibliotecas vinculadas estáticamente).

ecotasa
fuente
Descargué su instalador x64 1_51, sin embargo, contiene un archivo dañado para la biblioteca del sistema y parece que algunas otras bibliotecas son x86 (recibo advertencias del vinculador). Después de cambiar a las librerías de teeks99, todo salió bien.
Alex
4

Me hice un pequeño script que los compila todos para VS2005 y VS2008:

md stage\lib\win32
md stage\lib\x64

REM Visual Studio 2005
bjam --toolset=msvc-8.0 --build-type=complete stage
move /Y stage\lib\* stage\lib\win32\

bjam --toolset=msvc-8.0 address-model=64 --build-type=complete stage
move /Y stage\lib\* stage\lib\x64\

REM Visual Studio 2008
bjam --toolset=msvc-9.0 --build-type=complete stage
move /Y stage\lib\* stage\lib\win32\

bjam --toolset=msvc-9.0 address-model=64 --build-type=complete stage
move /Y stage\lib\* stage\lib\x64\
Harald Krause
fuente