ubuntu 18.04 install Boost 1.75

一、下载Boost 1.75源代码

首先上Boost官网下载Boost 1.75的源代码boost_1_75_0.tar.gz,如下图所示:

Boost 1.75源代码下载

二、编译安装boost 1.75源代码

将从boost_1_75_0.tar.gz下载后的boost 1.75源代码,如下图所示:

boost 1.75源代码

1、解压boost_1_75_0.tar.gz源代码

解压boost_1_75_0.tar.gz源代码

cd 
tar -xvf boost_1_75_0.tar.gz

2、运行bootstrap.sh脚本:

执行脚本bootstrap.sh

./bootstrap.sh 

也可以添加prefix参数:

./bootstrap.sh --with-libraries=all --with-toolset=gcc

·--with-libraries·指定编译哪些·boost·库,all的话就是全部编译,只想编译部分库的话就把库的名称写上,之间用 , 号分隔即可.
也可以添加prefix参数, 自定义生成的头文件和二进制库文件目录:

./booststrap.sh --prefix /usr

则生成的头文件在/usr/lib/include中, 二进制库文件在/usr/boost/lib中。

3、接下来,根据提示,执行以下命令开始进行boost的编译:

./b2 toolset=gcc

之后,进行安装指令:

./b2 install

boost 1.75头文件和库文件

三、测试使用boost库

测试boost线程库的源代码如下:

#include <boost/thread/thread.hpp> //包含boost头文件
#include <iostream>
#include <cstdlib>
using namespace std;

volatile bool isRuning = true;

void func1()
{
    static int cnt1 = 0;
    while(isRuning)
    {
        cout << "func1:" << cnt1++ << endl;
        sleep(1);
    }
}

void func2()
{
    static int cnt2 = 0;
    while(isRuning)
    {
        cout << "\tfunc2:" << cnt2++ << endl;
        sleep(2);
    }
}

int main()
{
    boost::thread thread1(&func1);
    boost::thread thread2(&func2);

    system("read");
    isRuning = false;

    thread2.join();
    thread1.join();
    cout << "exit" << endl;
    return 0;
}

为了方便,我把boost 1.75库安装到了/usr目录下,执行命令g++ threadExample01.cpp -o threadExample01 -I/usr/lib -lboost_thread -lpthread运行程序,生成了threadExample01可执行程序,然后执行./threadExample01运行程序,结果如下图所示:

运行boost thread线程示例

参考资料



作者:雪域迷影
链接:https://www.jianshu.com/p/1bc37a84ee57
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

<think>嗯,用户想在Ubuntu 18.04安装Boost 1.71。首先,我需要确认Boost 1.71是否在Ubuntu的默认仓库中。通常,Ubuntu的仓库可能不会提供最新版本的Boost,所以可能需要从源码编译安装。 根据用户提供的引用内容,特别是引用[2]和引用[3],用户可能已经尝试过使用apt安装,但遇到了问题。引用[3]建议直接下载源码编译,不要用其他版本,这可能是正确的做法。同时,引用[2]提到了安装依赖库的步骤,比如libbz2-dev、python-dev等,这些依赖在编译Boost时是必须的,所以需要确保这些依赖已经安装。 接下来,步骤应该是先卸载旧版本的Boost。根据引用[2],用户可能需要删除/usr/local/include/boost和/usr/local/lib中的相关文件。不过要小心,确保这些操作不会影响其他软件。然后安装必要的依赖库,比如sudo apt-get install build-essential libbz2-dev libicu-dev python-dev,这些在引用[2]中有提到。 然后,下载Boost 1.71源码包。用户需要从官方网站下载正确的版本,解压后进入目录。接下来是配置和编译,使用./bootstrap.sh指定安装路径,比如/usr/local,然后使用./b2进行编译。编译完成后,使用sudo ./b2 install进行安装安装后可能需要配置动态链接库,运行sudo ldconfig,这样系统才能找到新安装的库。最后,验证安装是否成功,可以通过检查版本号或者编译一个测试程序。 用户可能遇到的问题包括依赖项未安装导致编译失败,或者动态库路径未正确配置导致找不到库文件。引用[1]中提到的问题就是动态库找不到,所以需要确保安装后运行ldconfig,并检查库文件是否在正确的位置。 另外,引用[3]提到使用源码编译安装其他库如GTSAM、PCL等,可能需要类似的步骤,所以用户如果有其他依赖库需要安装,也需要考虑它们的安装方法。 总结步骤:卸载旧版本→安装依赖→下载源码→编译安装→配置动态链接→验证安装。同时提醒用户注意权限问题和依赖项是否完整。</think>### 分步解答:Ubuntu 18.04 安装 Boost 1.71 #### 1. **卸载旧版本 Boost** 若系统已存在旧版 Boost,需先清理相关文件: ```bash sudo rm -rf /usr/local/include/boost sudo rm -rf /usr/local/lib/libboost* ``` (此步骤仅影响手动安装Boost 版本,不影响通过 `apt` 安装的版本)[^2] #### 2. **安装依赖库** 编译 Boost 需要以下工具和库: ```bash sudo apt-get update sudo apt-get install build-essential g++ python3-dev autotools-dev libicu-dev libbz2-dev libflann-dev ``` (包含 C++ 编译器、Python 支持、ICU 库等关键依赖)[^2][^3] #### 3. **下载 Boost 1.71 源码** ```bash wget https://boostorg.jfrog.io/artifactory/main/release/1.71.0/source/boost_1_71_0.tar.gz tar -xzvf boost_1_71_0.tar.gz cd boost_1_71_0 ``` #### 4. **配置与编译** 运行 Bootstrap 脚本生成构建工具: ```bash ./bootstrap.sh --prefix=/usr/local ``` 指定安装路径为 `/usr/local`(默认系统目录)。 编译所有库(约需 20-60 分钟): ```bash ./b2 -j$(nproc) # 使用多核并行加速编译 ``` #### 5. **安装到系统路径** ```bash sudo ./b2 install ``` 此时 Boost 头文件会复制到 `/usr/local/include`,库文件到 `/usr/local/lib`[^3]。 #### 6. **配置动态链接库** 更新动态库缓存: ```bash sudo ldconfig ``` #### 7. **验证安装** 检查版本: ```bash cat /usr/local/include/boost/version.hpp | grep "BOOST_LIB_VERSION" ``` 输出应为 `#define BOOST_LIB_VERSION "1_71"`。 #### 常见问题解决 - **动态库未找到**:若出现类似 `libboost_system.so.1.71.0: cannot open shared object file`,检查 `/usr/local/lib` 是否在 `/etc/ld.so.conf` 中,或手动添加路径后执行 `sudo ldconfig`[^1]。 - **依赖缺失**:若编译报错(如缺少 `bzlib.h`),需确认 `libbz2-dev` 等依赖已安装。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值