适用于64位Windows的Boost的64位版本


119

VS2008是否有64位Boost库的版本?还是我必须自己编译?如果是这样,有没有人有经验?

Answers:


226

简而言之:

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

作为更长的答案,这是我的VS.NET 2008 32位和64位Boost库在同一层次结构中的构建说明(我怀疑这是一个常见的用例):

  1. 生成Win32二进制文件

    bjam --toolset=msvc-9.0 --build-type=complete stage
  2. 创建目录lib \ win32

  3. 将stage \ lib的内容移至lib \ win32
  4. 删除目录bin.v2并暂存
  5. 构建x64二进制文件

    bjam --toolset=msvc-9.0 address-model=64 --build-type=complete stage
  6. 创建目录lib \ x64

  7. 将stage \ lib的内容移至lib \ x64
  8. 删除目录bin.v2并暂存

25
您也可以指定舞台目录,这样就无需复制生成的库:bjam --toolset = msvc-9.0 address-model = 64 --build-type = complete --stagedir = lib \ x64 stage
hkaiser

8
什么是舞台
Ramadheer Singh,2010年

16
不幸的是,要构建64,address-model = 64不起作用。您需要使路径指向Visual Studio \ bin \ amd64 \ cl.exe。否则,它将构建32位版本。为此,您可以启动Microsoft SDK命令提示符,并使用“ setenv / Release / x64”重新定义所有路径。
Budric

2
@Budric,您确定吗?它似乎为我工作,明确指出即使在64位编译时也提供了通往32位编译器的路径。
Maciej Gryka'1

4
如果您需要同时构建32位和64位版本,则也可以使用stagedir参数:“ bjam --stagedir =。/ lib_64bit address-model = 64 toolset = msvc threading = multi”和“ bjam --stagedir =”。 / lib toolset = msvc threading = multi“
Odin 2012年

63

我的网站上有内置的二进制文件:http : //boost.teeks99.com

编辑2013-05-13:现在可以直接从sourceforge页面获得我的构建(从1.53开始)。


5
很好,您可以提供此功能,因为BoostPRo(为Boost库提供二进制文件)没有提供x64版本。谢谢!
CharlesB 2010年

您有机会发布VS2015(VC ++ 14)二进制文件吗?这将不胜感激。
罗素·格林

1
msvc-14.0二进制文件将在几周内发布在1.59版本中。
teeks99

22

UPDATE(19.09.2017):为VS2017添加了脚本行。请注意,Boost支持上述特定版本的VS2017编译器。我使用了最新版本(1.65.1)。

我使用以下脚本为x64和x86平台,lib和dll,VS2017,VS2015和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

您可以创建一个.bat文件并运行它来构建您的增强二进制文件。


12

目前,teeks99提供的64位二进制文​​件(请参阅其他答案)似乎是周围唯一的免费64位二进制文​​件。有一阵子,BoostPro还提供了64位二进制文​​件,但从1.51开始,它们似乎已经不可用了。

因此,我们又回到了两个选项:teeks99二进制文件或构建自己的二进制文件。

我需要建立自己的大多数信息在这里:https : //stackoverflow.com/a/2655683/613288

唯一缺少的是如何使它与Visual Studio 2010 Express的免费版本一起使用。我发现缺少其他地方的部分,经过一些自定义后,我用于构建boost 1.49.0二进制文件的最终配方是:

启动Visual C ++,然后从“工具”菜单中启动“ Visual Studio命令提示符”。

在控制台窗口中,执行以下操作:

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

然后在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

最后一个命令是针对我碰巧需要的而定制的(只是一些静态链接的库)。


我下载了他们的x64 1_51安装程序,但是,该文件包含系统lib的损坏的存档,并且似乎其他一些lib也存在x86(我收到链接器警告)。切换到teeks99的库之后,一切都变好了。
亚历克斯(Alex)

4

我给我做了一个小脚本,可以将它们全部编译为VS2005和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\
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.