Versão de 64 bits do Boost para janelas de 64 bits

119

Existe uma versão da biblioteca Boost de 64 bits para o VS2008? Ou eu tenho que compilar um eu mesmo? se, então, alguém tem experiência com isso?

ra170
fonte

Respostas:

226

Como resposta curta:

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

Como resposta mais longa, aqui estão minhas notas de compilação para ter as bibliotecas de impulso do VS .NET 2008 de 32 e 64 bits na mesma hierarquia (que eu suspeito ser um caso de uso comum):

  1. Crie os binários win32

    bjam --toolset=msvc-9.0 --build-type=complete stage
  2. Crie o diretório lib \ win32

  3. Mova o conteúdo do estágio \ lib para lib \ win32
  4. Remova os diretórios bin.v2 e estágio
  5. Crie os binários x64

    bjam --toolset=msvc-9.0 address-model=64 --build-type=complete stage
  6. Crie o diretório lib \ x64

  7. Mova o conteúdo do estágio \ lib para lib \ x64
  8. Remova os diretórios bin.v2 e estágio
Adrian Conlon
fonte
25
Você também pode especificar o diretório do estágio, o que elimina a necessidade de copiar as bibliotecas resultantes: bjam --toolset = msvc-9.0 address-model = 64 --build-type = complete --stagedir = lib \ x64 stage
hkaiser
8
o que é palco ?
Ramadheer Singh
16
Infelizmente para construir 64, o endereço-modelo = 64 não funciona. Você precisa ter o caminho apontando para o Visual Studio \ bin \ amd64 \ cl.exe. Caso contrário, ele cria a versão de 32 bits. Para fazer isso, você pode iniciar o prompt de comando do Microsoft SDK e usar "setenv / Release / x64", que redefine todos os caminhos.
Budric
2
@Budric, você tem certeza? Parece ter funcionado para mim e isso afirma explicitamente fornecer um caminho para o compilador de 32 bits, mesmo quando compilado em 64 bits.
Maciej Gryka
4
Se você precisar criar as versões de 32 e 64 bits, também é possível usar o parâmetro stagedir: "bjam --stagedir =. / Lib_64bit endereço-modelo = 64 toolset = msvc threading = multi" e "bjam --stagedir =. / lib toolset = msvc threading = multi "
Odin
63

Eu tenho os binários criados no meu site: http://boost.teeks99.com

Editar 13-05-2013: Minhas construções agora estão disponíveis (a partir de 1.53) diretamente da página do sourceforge .

teeks99
fonte
5
É ótimo que você forneça isso, pois o BoostPRo (que fornece binários para as bibliotecas do Boost) não fornece versões x64. Obrigado!
CharlesB
Alguma chance de você poder postar binários do VS2015 (VC ++ 14)? Isso iria ser incrivelmente apreciado.
Russell Greene
1
Os binários do msvc-14.0 chegarão à versão 1.59 dentro de algumas semanas.
Tbt199
22

UPDATE (19.09.2017): linhas de script adicionadas para o VS2017. Esteja ciente de que o Boost suporta o compilador VS2017 a partir de uma determinada versão acima. Eu usei a versão mais recente (1.65.1).

Usei esses scripts para criar impulso para as plataformas x64 e x86, lib e dll, depuração e lançamento para VS2017, VS2015 e 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

Você pode criar um .batarquivo e executá-lo para criar seus binários de impulso.

mtb
fonte
12

Neste momento, os binários de 64 bits fornecidos pelo teeks99 (consulte outra resposta) parecem ser os únicos binários de 64 bits gratuitos disponíveis. Por um tempo, o BoostPro também forneceu binários de 64 bits, mas a partir de 1,51 eles pareciam estar fora do ar ou fora dos negócios.

Então, voltamos a duas opções novamente: os binários teeks99 ou a criação de seus próprios.

A maioria das informações que eu precisava para criar minhas próprias estava aqui: https://stackoverflow.com/a/2655683/613288

A única coisa que faltava era como fazer isso funcionar com a versão gratuita do Visual Studio 2010 Express. Eu encontrei essa parte que estava faltando em outro lugar e, após alguma personalização, a receita final que usei para minha compilação dos binários do boost 1.49.0 foi:

Inicie o Visual C ++ e, no menu Ferramentas, inicie o Prompt de Comando do Visual Studio.

Na janela do console, faça o seguinte:

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

e depois no diretório 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

O último comando é personalizado para o que eu precisava (apenas algumas bibliotecas vinculadas estaticamente).

ecotax
fonte
Eu baixei o instalador x64 1_51, no entanto, ele contém um arquivo danificado para a lib do sistema e parece que algumas outras bibliotecas existem x86 (recebo avisos do vinculador). Depois de mudar para as bibliotecas do teeks99, tudo ficou bem.
Alex
4

Fiz para mim um pequeno script que os compila para o VS2005 e o 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
fonte