在尝试构建thrift
c ++库时,我在指定--with-boost
选项后遇到以下错误。
如果你有一个分阶段的升级库(仍然没有安装)请 在您的环境中指定$ BOOST_ROOT并且不提供PATH --with-boost选项。
我查看了boost文档(我不太熟悉),但我找不到术语staged boost library
的好定义。我看到了括号(still not installed)
,但是有许多状态的库可以在那个秋天属于not installed
类别。
首次下载boost
时,我会运行./bootstrap
和./b2
进行编译。
此时是staged
吗?或者我是否必须做其他事情才能使其成为staged
?
答案 0 :(得分:5)
你可以打电话
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.
stage
或install
的声明指定Boost Libraries是安装在名为stage
的子文件夹还是系统范围内。系统范围的含义取决于操作系统。在Windows中,目标目录为c:\boost
,在Linux中为/usr/local
。也可以使用-–prefix
选项显式指定目标目录。另请参阅this answer,我想这会有所帮助。
答案 1 :(得分:4)
当您运行.\b2
来编译Boost时,它会创建一个名为stage的文件夹,编译的输出将放在%BOOST_ROOT%\ stage \ lib文件夹中。现在,您可以将此lib文件夹复制到某处,并将其添加到链接器的路径中。但是有些项目可能希望在stage \ lib中提供二进制文件。所以"上演"这意味着您是否已编译并存在于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
。