Versione a 64 bit di Boost per finestre a 64 bit


119

Esiste una versione della libreria Boost a 64 bit per VS2008? O devo compilarne uno io stesso? se, quindi, qualcuno ha esperienza con esso?

Risposte:


226

In breve risposta:

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

Come risposta più lunga, ecco le mie note di build per avere le librerie boost di VS .NET 2008 a 32 bit e 64 bit nella stessa gerarchia (che sospetto sia un caso d'uso comune):

  1. Compilare i binari di win32

    bjam --toolset=msvc-9.0 --build-type=complete stage
  2. Crea la directory lib \ win32

  3. Sposta il contenuto di stage \ lib in lib \ win32
  4. Rimuovere le directory bin.v2 e stage
  5. Compila i binari x64

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

  7. Sposta il contenuto dello stage \ lib in lib \ x64
  8. Rimuovere le directory bin.v2 e stage

25
Puoi anche specificare la directory dello stage, che elimina la necessità di copiare le librerie risultanti in giro: bjam --toolset = msvc-9.0 address-model = 64 --build-type = complete --stagedir = lib \ x64 stage
hkaiser

8
qual è lo stadio ?
Ramadheer Singh

16
Sfortunatamente per costruire 64, address-model = 64 non funziona. È necessario che il percorso punti a Visual Studio \ bin \ amd64 \ cl.exe. Altrimenti costruisce la versione a 32 bit. Per fare ciò puoi avviare il prompt dei comandi di Microsoft SDK e utilizzare "setenv / Release / x64" che ridefinisce tutti i percorsi.
Budric

2
@ Budric, sei sicuro? Sembra che abbia funzionato per me e questo afferma esplicitamente di fornire un percorso al compilatore a 32 bit anche quando si costruisce a 64 bit.
Maciej Gryka

4
Se è necessario creare sia la versione a 32 che quella a 64 bit, è anche possibile utilizzare il parametro stagedir: "bjam --stagedir =. / Lib_64bit address-model = 64 toolset = msvc threading = multi" e "bjam --stagedir =. / lib toolset = msvc threading = multi "
Odin

63

Ho i binari compilati sul mio sito: http://boost.teeks99.com

Modifica 2013-05-13: le mie build sono ora disponibili (a partire dalla 1.53) direttamente dalla pagina di sourceforge .


5
È fantastico che tu fornisca questo, poiché BoostPRo (che fornisce i binari per le librerie Boost) non fornisce le versioni x64. Grazie!
CharlesB

C'è qualche possibilità che tu possa pubblicare i binari di VS2015 (VC ++ 14)? Sarebbe molto apprezzato.
Russell Greene

1
I binari di msvc-14.0 saranno nella versione 1.59 che uscirà tra un paio di settimane.
teeks99

22

UPDATE (19.09.2017): aggiunte righe di script per VS2017. Tieni presente che Boost supporta il compilatore VS2017 da una determinata versione sopra. Ho usato l'ultima versione (1.65.1).

Ho usato questi script per creare boost per piattaforme x64 e x86, lib e dll, debug e rilascio per 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

Puoi creare un .batfile ed eseguirlo per costruire i tuoi binari boost.


12

In questo momento, i binari a 64 bit forniti da teeks99 (vedi altra risposta) sembrano essere gli unici binari a 64 bit liberi in circolazione. Per un po ', BoostPro ha fornito anche binari a 64 bit, ma a partire dalla 1.51 sembrano essere fuori o per affari.

Quindi, eccoci di nuovo a due opzioni: i binari di teeks99 o crearne uno tuo.

La maggior parte delle informazioni di cui avevo bisogno per creare il mio era qui: https://stackoverflow.com/a/2655683/613288

L'unica cosa che mancava era come farlo funzionare con la versione gratuita di Visual Studio 2010 Express. Ho trovato quella parte mancante da qualche altra parte e, dopo alcune personalizzazioni, la ricetta finale che ho usato per la mia build dei binari boost 1.49.0 è stata:

Avvia Visual C ++ e dal menu Strumenti avvia il prompt dei comandi di Visual Studio.

Nella finestra della console, eseguire le operazioni seguenti:

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

e poi nella directory 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

L'ultimo comando è personalizzato per quello che mi è capitato di aver bisogno (solo alcune librerie collegate staticamente).


Ho scaricato il loro programma di installazione x64 1_51, tuttavia, contiene un archivio danneggiato per la libreria di sistema e sembra che alcune altre librerie siano x86 (ricevo avvisi del linker). Dopo essere passati alle librerie di teeks99 tutto è diventato OK.
Alex

4

Ho realizzato un piccolo script che li compila tutti per VS2005 e 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\
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.