【问题标题】:64-bit version of Boost for 64-bit windows用于 64 位 Windows 的 64 位版本的 Boost
【发布时间】:2011-01-20 07:18:28
【问题描述】:

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

【问题讨论】:

    标签: c++ visual-studio-2008 boost


    【解决方案1】:

    作为一个简短的回答:

    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 和 stage
    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 和 stage

    【讨论】:

    • 您也可以指定阶段目录,这样就无需复制生成的库: bjam --toolset=msvc-9.0 address-model=64 --build-type=complete -- stagedir=lib\x64 阶段
    • @hkaiser 当我尝试这些库以lib\x64\lib 结束时。
    • 不幸的是构建 64,address-model=64 不起作用。您需要将路径指向 Visual Studio \bin\amd64\cl.exe。否则它会构建 32 位版本。为此,您可以启动 Microsoft SDK 命令提示符并使用“setenv /Release /x64”重新定义所有路径。
    • @Budric,你确定吗?它似乎对我有用,this 明确声明即使在 64 位构建时也提供 32 位编译器的路径。
    • 如果您需要构建 32 位和 64 位版本,也可以使用 stagedir 参数:“bjam --stagedir=./lib_64bit address-model=64 toolset=msvc threading=multi”和“bjam --stagedir=./lib toolset=msvc threading=multi”
    【解决方案2】:

    我的网站上有已构建的二进制文件: http://boost.teeks99.com

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

    【讨论】:

    • 很高兴您提供了这个,因为 BoostPRo(为 Boost 库提供二进制文件)不提供 x64 版本。谢谢!
    • 有机会发布 VS2015 (VC++14) 二进制文件吗?那将不胜感激。
    • msvc-14.0 二进制文件将在几周后发布在 1.59 版本中。
    【解决方案3】:

    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 文件并运行它来构建您的 boost 二进制文件。

    【讨论】:

      【解决方案4】:

      此时,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 安装程序,但是,它包含损坏的系统库存档,并且似乎还有一些其他库是 x86(我收到链接器警告)。切换到 teks99 的库后一切都好了。
      【解决方案5】:

      我制作了一个小脚本,为 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\
      

      【讨论】:

        猜你喜欢
        • 2013-09-10
        • 2013-09-16
        • 2022-01-13
        • 1970-01-01
        • 2019-10-21
        • 1970-01-01
        • 1970-01-01
        • 2021-07-08
        • 1970-01-01
        相关资源
        最近更新 更多