【问题标题】:How to install Boost from source如何从源代码安装 Boost
【发布时间】:2019-08-08 00:43:33
【问题描述】:

我正在尝试从源代码安装 Boost C++。

我首先尝试使用 yum 将它们安装在(Amazon Linux AMI)中,但它安装的版本太旧了。我至少需要 1.54 版

所以我尝试按照此处的说明进行操作: https://www.boost.org/doc/libs/1_70_0/more/getting_started/unix-variants.html

下载源代码后,我尝试将头文件符号链接到 /usr/include:

ln -s /root/boost_1_70_0/boost /usr/include/boost

然后我按照说明尝试构建:

cd /root/boost_1_70_0
./bootstrap.sh
./b2 install

然后,当我尝试编译需要 boost 库(恰好是 OSRM)的程序时,我收到此错误:

make[2]: *** No rule to make target `/usr/lib64/libboost_date_time-mt.so', needed by `osrm-components'.  Stop.

所以似乎我需要构建 boost .so 文件以进入 /usr/lib64。但是我该怎么做呢?

【问题讨论】:

  • 恐怕你需要花一些时间来学习你的 Linux 发行版(rpm 或 deb)的原生打包基础架构,所以你可以通过创建一个可以由 Linux 发行版的包管理器安装。否则,像这样,在不利用 Linux 发行版包管理器的依赖检查安全网的情况下,使用定制的不同版本的核心系统库来主动覆盖系统安装的库,是一种相当有效的方式来结束一块无法启动的砖块。
  • 我可以建议你看看柯南吗? docs.conan.io/en/latest/getting_started.html

标签: c++ boost


【解决方案1】:

我相信您已经构建了 boost .so 文件,但我不知道在哪里。它通常会尝试将它们安装在/usr/local 中,请参阅您引用的说明的第 5.1 节。

您可以通过locate 找到它们,例如:

 locate boost

否则,您可以调用 ./bootstrap.sh 并带有前缀指示 您希望它在哪里构建库,例如:

./bootstrap.sh --prefix=/root/boost_1_70_0/stage
./b2 install

然后您可以将.so 文件及其符号链接复制到/usr/lib64,例如:

cd /usr/lib64
rm -fr libboost*
cp -a /root/boost_1_70_0/stage/lib/libboost* .
chmod a+x libboost*

注意:/usr/lib64 中的rm -fr libboost* 行是删除您使用yum 安装的非常旧版本的boost。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2021-04-30
    • 2011-06-12
    • 1970-01-01
    相关资源
    最近更新 更多