多线程 boost编译与运行的坑

背景:因为要使用boost里的多线程库,所以遇到了下面的坑。

系统版本:ubuntu18.04

一,安装boost

1,去boost官网下载 boost_1_XX_0.tar.gz

2,解压

tar -zxvf boost_1_65_0.tar.gz  

3,进去解压后的文件夹

cd boost_1_XX_0 

4,编译

bootstrap.sh 

5,安装

./b2

注意:安装完成后,会有信息打印到控制台,最重要的就是:

  • 头文件所在的路径(我的例子:/home/ys/Downloads/boost_1_68_0
  • 库文件所在的路径(我的例子:/home/ys/Downloads/boost_1_68_0/stage/lib)

二,编译使用了boost库里的多线程库的代码的坑,比如下面的代码。如果下面的代码想编译通过,必须使用下面的命令。

g++ -g -I/home/ys/Downloads/boost_1_68_0 boost-shared-mutex.3.13.cpp -std=c++11 -L/home/ys/Downloads/boost_1_68_0/stage/lib  -lboost_thread -lboost_system -pthread

解释一下各个参数的作用:

  • -I:因为使用了<boost/thread/shared_mutex.hpp>头文件,这个头文件只在你的安装的文件夹里,假设系统找不到这个文件夹,所以就找不这个头文件,指定了-I就是告诉编译器去哪里找这个头文件。

  • -l:程序要使用的外部库(动态库,二进制文件),库名为boost_thread和boost_system,这2个库对应的实际文件为,libboost_thread.so和libboost_system.so,也就是去掉了lib和.so。如果这2个库文件编译器能够找到就可以编译,但是如果找不到就需要用-L参数来告诉编译器这2个文件在哪里

  • -L:指定库文件所在的路径。如果不指定出下面的错误。

    /usr/bin/ld: cannot find -lboost_thread
    /usr/bin/ld: cannot find -lboost_system
    collect2: error: ld returned 1 exit status

    gcc/g++ 参数详解

参数太长了,好麻烦。

省略-I的办法,在/etc/profile文件里加下面一行,也就是头文件所在的路径,以后就可以不输入-I里,修改(需要root权限)后需要重启系统

export CPLUS_INCLUDE_PATH=/home/ys/Downloads/boost_1_68_0

省略-L的办法,网上一大堆,但实验了都不好用,呜呜呜。

三,终于编译好了,运行一下,Duang,又崩了,说找不到库。原因是:运行时系统要去找这2个库文件boost_thread,boost_system,但是这2个库文件不在系统能找到的地方,所以崩了。

解决办法:编辑/etc/ld.so.conf文件末尾,加下面一行,也就是库文件所在的路径,重启系统后,就能找到它们啦。

/home/ys/Downloads/boost_1_68_0/stage/lib
#include <map>
#include <string>
#include <mutex>
#include <boost/thread/shared_mutex.hpp>int main(){}

c/c++ 学习互助QQ群:877684253

本人微信:xiaoshitou5854

转载于:https://www.cnblogs.com/xiaoshiwang/p/9944181.html

c/c++ 多线程 ubuntu18.04 boost编译与运行的坑相关推荐

  1. ubuntu18.04 muduo编译安装

    ubuntu18.04 muduo编译安装 muduo采用CMake安装 sudo apt-get install cmake muduo依赖boost库 sudo apt-get install l ...

  2. caffe在ubuntu18.04下编译

    <!---title:caffe在ubuntu18.04下编译--> <!---keywords:caffe, build, ubuntu18,--> 原始引用地址:  [ca ...

  3. 在Ubuntu18.04上编译SWASH模型

    在Ubuntu18.04上编译SWASH模型 SWASH模型 编译准备 源代码下载 Intel Fortran Compiler安装 MPICH库安装 其它 编译代码 本文内容参考了用户Mr.Zhen ...

  4. 20221218解决在Ubuntu18.04下编译Firefly的Core-3588J出现lz4的问题

    20221218解决在Ubuntu18.04下编译Firefly的Core-3588J出现lz4的问题 2022/12/18 15:37 解决方法:编译最新的lz4的dev分支! https://wi ...

  5. Ubuntu18.04配置carla0.9.11踩坑与解决方法总结,同时解决安装carla-ros-bridge遇到的问题,并复现OpenCDA成功与ros关联

    Ubuntu18.04配置carla0.9.11踩坑与解决方法总结,同时解决安装carla-ros-bridge遇到的问题,并复现OpenCDA成功与ros关联 背景: 主要是为了复现叶小飞的Open ...

  6. ubuntu18.04详尽编译DS_SLAM流程(推荐收藏)

    一.介绍 DS-SLAM是一款基于orb-slam2改进的剔除动态物体实时定位建图程序, 本文主要功能为复现DS_SLAM,具体代码解析并不涉及.本次复现设备配置为: Ubuntu 18.04 CPU ...

  7. ubuntu18.04安装编译运行PL-SLAM

    作者开源的代码地址:https://github.com/rubengooj/pl-slam 我的环境:Ubuntu18.04,cmake3.10.2 在安装相关库和项目的过程中出现了不少问题,记录在 ...

  8. Ubuntu18.04 MOOS-ivp 编译运行

    前言 这是一个linux菜鸡 菜猫,学习 moos-ivp的故事. 原文链接 1.运行环境 虚拟机环境: Ubuntu 18.04 VMware12 安装 Ubuntu18.04 MOOS-ivp版本 ...

  9. Ubuntu18.04+GTX3090 编译安装pytorch-nightly环境

    由于pytorch目前对30系列显卡的支持不是很好,最好使用源码编译安装,特此记录. 时间:2020年11月24日 安装方式:源码编译安装 环境:ubuntu18.04 + GTX3090 + 显卡驱 ...

  10. Ubuntu18.04上编译并跑通VINS-Fusion

    VINS-Fusion github 地址:​​​​​​GitHub - HKUST-Aerial-Robotics/VINS-Fusion: An optimization-based multi- ...

最新文章

  1. Java 10个调试技巧
  2. 简单绘图软件实现mfc大作业_生产流程图怎么做?简单易上手的流程图工具
  3. pdfbox 第一页加内容_Java使用PDFBox操作PDF文件获取页码、文章内容、缩略图
  4. 通过telnet自动下载cfg配置文件
  5. python从零开始学习网站-7天从零开始学Python
  6. Markdown语言调整图片居中、大小
  7. java爬虫 webcollector_Java爬虫-WebCollector | 学步园
  8. 人工智能--一种现代的方法(知识点总结第一章)
  9. 浅谈人工智能 | 语音识别面面观
  10. 支付宝给微信好友转账!转了?好像又没转
  11. vscode连接模拟器运行flutter项目
  12. python列表两两相减_Python数据分析实例一:医院药品销售数据
  13. 【Puppeteer】基于Puppeteer采集网页图片资源
  14. Day3_Pytorch入门——人脸标点绘图(简单)
  15. mysql host 为%_mysql中host为%是什么意思
  16. k8s探针检测php,k8s实践11:kubernetes监测探针简单测试
  17. python 判断是否为数字(整型、浮点型),Python中判断输入是否为数字的实现代码
  18. 什么是云平台_BIMer,你知道什么是BIM云平台吗?
  19. Wireshark抓包的妙用
  20. 农业+电商+XFS,农民伯伯的福音来啦

热门文章

  1. SSH整合所需的jar包
  2. 读懂金融危机必看的十四本书
  3. japid-conf目录文件配置
  4. 字符编码(1)——Unicode,utf-8
  5. 使用 pandas读取 excel 文件的数据
  6. PyCharm 与 Git/GitHub 关联 / 取消关联
  7. 推荐算法竞赛TOP解决方案汇总
  8. 【实践】Pytorch nn.Transformer的mask理解
  9. 百度工程师带来干货分享,助你转型AI应用工程师!
  10. 你对NLP的迁移学习爱的有多深?21个问题弄懂最新的NLP进展。