c/c++ 多线程 ubuntu18.04 boost编译与运行的坑
多线程 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编译与运行的坑相关推荐
- ubuntu18.04 muduo编译安装
ubuntu18.04 muduo编译安装 muduo采用CMake安装 sudo apt-get install cmake muduo依赖boost库 sudo apt-get install l ...
- caffe在ubuntu18.04下编译
<!---title:caffe在ubuntu18.04下编译--> <!---keywords:caffe, build, ubuntu18,--> 原始引用地址: [ca ...
- 在Ubuntu18.04上编译SWASH模型
在Ubuntu18.04上编译SWASH模型 SWASH模型 编译准备 源代码下载 Intel Fortran Compiler安装 MPICH库安装 其它 编译代码 本文内容参考了用户Mr.Zhen ...
- 20221218解决在Ubuntu18.04下编译Firefly的Core-3588J出现lz4的问题
20221218解决在Ubuntu18.04下编译Firefly的Core-3588J出现lz4的问题 2022/12/18 15:37 解决方法:编译最新的lz4的dev分支! https://wi ...
- Ubuntu18.04配置carla0.9.11踩坑与解决方法总结,同时解决安装carla-ros-bridge遇到的问题,并复现OpenCDA成功与ros关联
Ubuntu18.04配置carla0.9.11踩坑与解决方法总结,同时解决安装carla-ros-bridge遇到的问题,并复现OpenCDA成功与ros关联 背景: 主要是为了复现叶小飞的Open ...
- ubuntu18.04详尽编译DS_SLAM流程(推荐收藏)
一.介绍 DS-SLAM是一款基于orb-slam2改进的剔除动态物体实时定位建图程序, 本文主要功能为复现DS_SLAM,具体代码解析并不涉及.本次复现设备配置为: Ubuntu 18.04 CPU ...
- ubuntu18.04安装编译运行PL-SLAM
作者开源的代码地址:https://github.com/rubengooj/pl-slam 我的环境:Ubuntu18.04,cmake3.10.2 在安装相关库和项目的过程中出现了不少问题,记录在 ...
- Ubuntu18.04 MOOS-ivp 编译运行
前言 这是一个linux菜鸡 菜猫,学习 moos-ivp的故事. 原文链接 1.运行环境 虚拟机环境: Ubuntu 18.04 VMware12 安装 Ubuntu18.04 MOOS-ivp版本 ...
- Ubuntu18.04+GTX3090 编译安装pytorch-nightly环境
由于pytorch目前对30系列显卡的支持不是很好,最好使用源码编译安装,特此记录. 时间:2020年11月24日 安装方式:源码编译安装 环境:ubuntu18.04 + GTX3090 + 显卡驱 ...
- Ubuntu18.04上编译并跑通VINS-Fusion
VINS-Fusion github 地址:GitHub - HKUST-Aerial-Robotics/VINS-Fusion: An optimization-based multi- ...
最新文章
- Java 10个调试技巧
- 简单绘图软件实现mfc大作业_生产流程图怎么做?简单易上手的流程图工具
- pdfbox 第一页加内容_Java使用PDFBox操作PDF文件获取页码、文章内容、缩略图
- 通过telnet自动下载cfg配置文件
- python从零开始学习网站-7天从零开始学Python
- Markdown语言调整图片居中、大小
- java爬虫 webcollector_Java爬虫-WebCollector | 学步园
- 人工智能--一种现代的方法(知识点总结第一章)
- 浅谈人工智能 | 语音识别面面观
- 支付宝给微信好友转账!转了?好像又没转
- vscode连接模拟器运行flutter项目
- python列表两两相减_Python数据分析实例一:医院药品销售数据
- 【Puppeteer】基于Puppeteer采集网页图片资源
- Day3_Pytorch入门——人脸标点绘图(简单)
- mysql host 为%_mysql中host为%是什么意思
- k8s探针检测php,k8s实践11:kubernetes监测探针简单测试
- python 判断是否为数字(整型、浮点型),Python中判断输入是否为数字的实现代码
- 什么是云平台_BIMer,你知道什么是BIM云平台吗?
- Wireshark抓包的妙用
- 农业+电商+XFS,农民伯伯的福音来啦