Ubuntu下编译使用Boost 1.83.0版本
一、安装方法
源码压缩包去我的资源中查找。
安装步骤:
-
tar -zxvf boost_1_83_0.tar.gz
-
cd boost_1_83_0
-
./bootstrap.sh
-
./b2 // 开始编译
-
sudo ./b2 --prefix=/usr/local/boost install
安装完成后如下图所示:
检查安装目录如下图所示:
二、编辑环境变量
sudo vi /etc/profile
# 头文件路径
CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/boost/include
# 动态库以及静态库
LIBRARY_PATH=$LIBRARY_PATH:/usr/local/boost/lib
export LIBRARY_PATH CPLUS_INCLUDE_PATH
#加载
source /etc/profile
三、使用C++程序进行测试boost库是否安装完成
#include <iostream>
#include <boost/version.hpp>
#include <boost/config.hpp>
#include <boost/thread/thread.hpp>
#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;
}
四、进行测试以及遇到的问题解决方法
- 编译方法:
#需要手动指定动态库路径
g++ main.cpp -o main -L/usr/local/boost/lib -lboost_thread -lpthread
注意:如果在编译过程中出现无法找到头文件问题,则再次执行:"source /etc/profile"即可。
- 编译完成后尝试执行可执行程序
root@tl-vmware:/home# ./main
./main: error while loading shared libraries: libboost_thread.so.1.83.0: cannot open shared object file: No such file or directory
# 无法打开共享目标文件:没有这样的文件或目录
解决方法:
1、临时使用(仅对当前终端有效,终端退出后失效)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/boost/lib
#因为我们安装是安装在/usr/local/boost的
2、修改/.bashrc或/.bash_profile或/etc/profile。
区别是前两个只对当前用户生效,/etc/profile对所有用户起效。
- 修改~/.bashrc的例子
sudo gedit ~/.bashrc
# 添加一句
export LD_LIBRARY_PATH=/usr/local/boost/lib:$LD_LIBRARY_PATH
# 保存退出
source ~/.bashrc
- 修改/etc/profile的例子
sudo gedit /etc/profile
# 在文件末尾添加
export LD_LIBRARY_PATH=/usr/local/boost/lib{LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# 保存退出
source /etc/profile
3、在根目录/etc/ld.so.conf.d/路径下创建任意boost.conf文件(有冲突则更改),把lib文件的路径写在里面
sudo gedit /etc/ld.so.conf.d/boost.conf
# 写入
/usr/local/boost/lib
# 保存退出
# 更新缓存
sudo ldconfig