东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2125|回复: 2
打印 上一主题 下一主题

[C/C++] 手动编译安装Boost1.69新版本(先卸载旧版本)

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14441
QQ
跳转到指定楼层
楼主
发表于 2021-8-12 16:33:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
手动编译安装Boost1.69新版本(先卸载旧版本)
查看一下(先卸载旧版本):
jiang@jiang-Ubuntu:~$ dpkg -S /usr/include/boost/version.hpp
libboost1.65-dev:amd64: /usr/include/boost/version.hpp
这种方式查看版本有问题,明明都已经删掉了/usr/include/boost/,估计是通过dpkg方式安装的信息残留
在CMakeLists.txt中查看一下版本(靠谱):
find_package(Boost)  输出:Found Boost: /usr/include (found version "1.65.1")


删除/usr/include/boost文件夹,删除/usr/lib中和boost有关的文件
sudo rm -rf /usr/include/boost
sudo rm -rf /usr/lib/libboost*
sudo rm -rf /usr/lib/cmake/boost*
sudo rm -rf /usr/lib/cmake/Boost*sudo rm -rf /usr/lib/x86_64-linux-gnu/cmake/boost*
sudo rm -rf /usr/lib/x86_64-linux-gnu/cmake/Boost*

在CMakeLists.txt中再查看一下版本
find_package(Boost)  输出:Could NOT find Boost (missing: Boost_INCLUDE_DIR)
到此boost 1.65.1就已经成功被卸载了

如何将系统里的boost库删除干净?
sudo dpkg -l  搜索boost
sudo dpkg -l libboost*

ii 表示该软件需要安装且已经安装,没有出现错误

sudo dpkg --purge则安装文件和配置文件都删除

sudo apt autoremove libboost1.65-dev




https://boostorg.jfrog.io/ui/native/main/release/1.69.0/source/
下载文件:boost_1_69_0.tar.gz
tar -zxvf boost_1_69_0.tar.gz
cd boost_1_69_0
编译:sudo ./bootstrap.sh   注意一下gcc的版本
默认安装在/usr/local/include头文件下,库文件就被默认安装在/usr/local/lib下
安装:sudo ./b2 install --prefix=/usr (我这里修改了一下安装位置)
花了大概10多分钟 输出:...updated 16071 targets...

运行bootstrap.sh脚本:   ./bootstrap.sh
开始进行boost的编译:   ./b2 toolset=gcc  可以变交叉编译工具链
安装指令:               sudo ./b2 install
马上使用:               sudo ldconfig


环境变量,网上有人配置了,但是我这里没配置,好像也问题不大

  1. jiang@jiang-Ubuntu:~/c_c++_works/gnuradio/build$ cat /usr/local/include/boost/version.hpp
  2. //  Boost version.hpp configuration header file  ------------------------------//

  3. //  (C) Copyright John maddock 1999. Distributed under the Boost
  4. //  Software License, Version 1.0. (See accompanying file
  5. //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

  6. //  See http://www.boost.org/libs/config for documentation

  7. #ifndef BOOST_VERSION_HPP
  8. #define BOOST_VERSION_HPP

  9. //
  10. //  Caution: this is the only Boost header that is guaranteed
  11. //  to change with every Boost release. Including this header
  12. //  will cause a recompile every time a new Boost version is
  13. //  used.
  14. //
  15. //  BOOST_VERSION % 100 is the patch level
  16. //  BOOST_VERSION / 100 % 1000 is the minor version
  17. //  BOOST_VERSION / 100000 is the major version

  18. #define BOOST_VERSION 106900
复制代码



通过代码测试一下boost安装成功与否:
g++ test_boost.cpp -o boost
./boost 输出:
  1. max timespan: 2.56205e+09h
  2. min timespan: 1e-06s
  3. now time elapsed: 2.6e-05s
  4. boost version106900
  5. boost lib version1_69
复制代码

  1. #include <string>
  2. #include <iostream>
  3. #include <boost/version.hpp>
  4. #include <boost/timer.hpp>
  5. using namespace std;
  6. int main()
  7. {
  8.     boost::timer t;
  9.     cout << "max timespan: " << t.elapsed_max() / 3600 << "h" << endl;
  10.     cout << "min timespan: " << t.elapsed_min() << "s" << endl;
  11.     cout << "now time elapsed: " << t.elapsed() << "s" << endl;
  12.     cout << "boost version" << BOOST_VERSION <<endl;
  13.     cout << "boost lib version" << BOOST_LIB_VERSION <<endl;
  14.     return 0;
  15. }
复制代码

如果用cmake方式(CMakeLists.txt文件):
  1. cmake_minimum_required (VERSION 2.8)
  2. project (main)

  3. #SET(CMAKE_CXX_STANDARD 11)
  4. #SET(CMAKE_C_STANDARD 11)

  5. aux_source_directory(. ALL_SRCS)                        # 添加当前目录下所有的源文件
  6. #set(ALL_SRCS "1.cpp")
  7. #add_subdirectory(lib)                                                # 添加lib子目录
  8. add_executable(main ${ALL_SRCS})        # 指定生成目标,注意这里要用${ALL_SRCS}!!!
  9. message(WARNING "我说:lib目录里的文件编译成动态库再由main函数调用")
  10. #target_link_libraries(main power)        # 添加链接库,power是在lib子目录的CMakeLists中定义的

  11. #find_package(FFTW3f)
  12. find_package(Boost)
  13. target_link_libraries(main -lboost_system -lboost_thread -lpthread)
  14. #add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)


复制代码









让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

0

主题

98

帖子

200

积分

中级会员

Rank: 3Rank: 3

积分
200
沙发
发表于 2021-11-23 19:32:05 | 只看该作者
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14441
QQ
板凳
 楼主| 发表于 2022-8-30 08:59:29 | 只看该作者
如果之前Boost的旧版本卸载不干净, 又安装了新版本,可能会导致 使用的时候, 引入的头文件是新版本的, 但是库文件是旧的 ,导致冲突, 出现意想不到的报错:
linux 的 段错误 gdb调试都看不出什么情况
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-5-28 01:09 , Processed in 0.177542 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表