【问题标题】:How to achieve the same result installing boost from source as from a repository?如何从源代码安装提升与从存储库安装相同的结果?
【发布时间】:2017-09-25 04:41:32
【问题描述】:

当使用以下代码安装 boost 时,可以使用 #include <boost/whatever.hpp> 简单地将其包含在项目中:

sudo apt install libboost-dev

根据Boost install instruction,可以使用$BOOST_ROOT实现#include <boost/whatever.hpp>。

当通过存储库安装 boost 时,$BOOST_ROOT 不存在。

从存储库安装 boost 时实际会发生什么,以及从源安装时如何实现相同的结果?

【问题讨论】:

    标签: c++ linux ubuntu boost installation


    【解决方案1】:

    gcc 有一个默认的搜索路径。当您从源代码编译 boost 并运行 make install 时,它会将自身安装到它称为“BOOST_ROOT”的目录中。由于该目录不在 gcc 包含文件的默认搜索路径中,因此您必须多做一些工作才能让程序在编译时找到头文件。

    boost deb 包将标头安装到/usr/include/boost。由于/usr/include 在 gcc 标头搜索中,因此不需要额外的工作。

    如果您想复制该行为,我建议您指示 boost 安装到 /usr/local/include/boost。

    /usr/local 目录专门用于安装本地编译的库,因此它比安装 deb 的/usr/include 更好。这也避免了碰撞。更好的是,它位于 gcc 的默认头文件搜索路径中。

    【讨论】:

    • 最好先安装到默认路径,然后再安装mkdir -p /usr/local/include; ln -s /usr/local/boost_x_y/include/boost /usr/local/include(二进制文件也一样)。这样可以安装多个 boost 版本,并通过更新一些符号链接来选择“默认”版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 2015-06-29
    • 2016-11-02
    相关资源
    最近更新 更多