How do you build the x64 Boost libraries on Windows?
Asked Answered
L

4

52

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?

Linet answered 19/11, 2008 at 15:18 Comment(0)
L
65

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

Look e.g. here.

Lankford answered 19/11, 2008 at 15:28 Comment(3)
This answer is also valid for the newer boost build tool, b2.Sinusitis
can you explain this then? C:\Boost\boost_1_61_0>.\b2 --stagedir=lib\x64 architecture=x86 address-model=64 link=static --build-type=complete stage Performing configuration checks - 32-bit : yesLilley
It seems that address-model does not show in the output of b2 --help (b2 4.3) , how can I get help of it from commandline ?Scavenger
A
10

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) 
...
Aubrey answered 14/6, 2017 at 9:56 Comment(0)
H
3

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

Hull answered 30/10, 2019 at 2:24 Comment(0)
C
1

You may find following Boost.Build property:

address-model=64
Crwth answered 13/6, 2015 at 1:1 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.