How do you build the x64 Boost libraries on Windows?

C++Visual Studio-2005Boost64 BitBoost Build

C++ Problem Overview


I've built the x86 Boost libraries many times, but I can't seem to build x64 libraries. I start the "Visual Studio 2005 x64 Cross Tools Command Prompt" and run my usual build:

bjam --toolset=msvc --build-type=complete --build-dir=c:\build install

But it still produces x86 .lib files (I verified this with dumpbin /headers). What am I doing wrong?

C++ Solutions


Solution 1 - C++

You need to add the address-model=64 parameter.

Look e.g. here.

Solution 2 - C++

The accepted answer is correct. Adding this in case somebody else googles this answer and still fails to produce x64 version.

Following is what I had to do to build Boost 1.63 on Visual Studio 15 2017 Community Edition.

Commands executed from VS environment cmd shell. Tools -> Visual Studio Command Prompt

C:\Work\Boost_1_63> C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat amd64
C:\Work\Boost_1_63> bootstrap.bat
C:\Work\Boost_1_63> bjam -j4 architecture=x86 address-model=64 link=static stage
C:\Work\Boost_1_63> bjam --prefix=C:\opt\boost architecture=x86 address-model=64 link=static install

You can verify that the resulting .lib is x64 with dumpbin:

C:\Work> dumpbin /headers C:\work\boost_1_63\stage\lib\libboost_locale-vc140-mt-1_63.lib | findstr machine
8664 machine (x64)
8664 machine (x64)
8664 machine (x64)
8664 machine (x64) 
...

Solution 3 - C++

With b2 the command is:

b2 --build-dir=build/x64 address-model=64 threading=multi --build-type=complete --stagedir=./stage/x64

It will show default address-model: 32-bit at the beginning but will still build in 64-bit (how confusing).You should have the dlls created with names such as library-vc140-mt-x64-1_71.dll confirming it is 64-bit.

source: Building Boost 32-bit and 64-bit libraries on Windows

Solution 4 - C++

You may find following Boost.Build property:

address-model=64

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFerruccioView Question on Stackoverflow
Solution 1 - C++macbirdieView Answer on Stackoverflow
Solution 2 - C++Teemu IkonenView Answer on Stackoverflow
Solution 3 - C++RemiDavView Answer on Stackoverflow
Solution 4 - C++sergtkView Answer on Stackoverflow