【问题标题】:What is a staged boost library?什么是分阶段提升库?
【发布时间】:2015-04-27 00:18:06
【问题描述】:

在尝试构建thrift c++ 库时,我在指定--with-boost 选项后遇到了以下错误。

如果您有分阶段的 boost 库(仍未安装),请 在您的环境中指定 $BOOST_ROOT 并且不提供 PATH --with-boost 选项。

我查看了 boost 文档(我不太熟悉),但我没有找到术语 staged boost library 的良好定义。我看到了括号 (still not installed),但有许多州是图书馆可以属于 not installed 的类别。

当我第一次下载boost 时,我运行./bootstrap./b2 来编译它。

此时是staged 吗?还是我必须做其他事情才能做到staged

【问题讨论】:

    标签: c++ boost


    【解决方案1】:

    你可以打电话

    b2 --help
    

    查看Boost.Build的选项,在那里你可以找到

    install                 Install headers and compiled library files to the
    =======                 configured locations (below).
    ...
    stage                   Build and install only compiled library files to the
    =====                   stage directory.
    

    stageinstall 的声明指定 Boost 库是安装在名为 stage 的子文件夹中还是系统范围内。 system-wide 的含义取决于操作系统。在 Windows 中,目标目录是 c:\boost,在 Linux 中是 /usr/local。也可以使用-–prefix 选项显式指定目标目录。另请参阅this answer,我想这会有所帮助。

    有关更多信息,请参阅 WindowsLinux 的入门指南。

    【讨论】:

    • “stage 或 install 的声明指定了 Boost Libraries 是安装在名为 stage 的子文件夹中还是系统范围内。”不,这不是真的。 “安装”绝对不会在系统范围内安装;它完全按照文档所说的:安装到配置的位置。对于我们这些为交叉编译而构建的人,我们从不在系统范围内安装,但我们肯定会使用 install。
    【解决方案2】:

    当你运行.\b2 编译 Boost 时,它会创建一个名为 stage 的文件夹,并且编译的输出放在 %BOOST_ROOT%\stage\lib 文件夹中。现在您可以将此 lib 文件夹复制到某处并将其添加到链接器的路径中。然而,一些项目可能期望二进制文件在 stage\lib 中可用。所以这里的“staged”意味着如果你有编译的库并存在于 stage\lib 文件夹中。 .b2 命令采用几个不同的参数来编译不同的二进制子文件,例如,下面编译链接到共享运行时并针对 x64 架构的二进制文件:

     b2 variant=debug,release link=shared runtime-link=shared address-model=64
    

    每个 lib 文件名变体都有标签,因此它们不会相互覆盖,例如,libboost_date_time-vc140-mt-gd-1_62.lib

    【讨论】:

      猜你喜欢
      • 2019-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 2016-06-07
      • 2016-06-11
      • 2019-10-24
      相关资源
      最近更新 更多