ubuntu无法添加PPA的解决办法;TBB安装问题。Gcc安装问题

首先阐述一下过程:为了安装IG_lio,这个包在ubuntu20.04下,最容易安装,一把过。但是如果安装到18.04下,tbb是个坑。为了装tbb,要先安装gcc和g++

然后安装gcc碰到了ppa的坑。

Ubuntu18.04 安装 tbb 走过的坑。Ubuntu下安装slam的一些算法,但是依赖与tbb,为了安装tbb,需要依赖gcc-9。为了安装gcc,走了以下的坑。

安装gcc-9和g++-9需要依赖ppa

sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
sudo apt-get update 
sudo apt-get install gcc-9
sudo apt-get install g++-9

第一步会报错:

我试过好多方法。都不管用,包括但不限于:

sudo apt-get install --reinstall ca-certificates

sudo -E add-apt-repository -y ppa:ubuntu-toolchain-r/test

以及,下面这个方案也不行。

Linux ubuntu修改软件源为国内源;解决apt install、PPA源太慢;_ubuntu ppa 国内源-CSDN博客

PPA源可以理解成第三方源。有些软件在ubuntu官方软件源是没有的,但在PPA源里就可能有。但PPA的默认源也是国外的,访问很慢。

cd /etc/apt/sources.list.d

可以看到ppa源列表文件(以.list结尾的),编辑,将其中的http://ppa.launchpad.net替换为

http://launchpad.proxy.ustclug.org

最后的解决方案:

把网络切换成手机网络。手机开个热点。搞定。

TBB安装参照

Ubuntu 安装 tbb 步骤详解_ubuntu tbb-CSDN博客

解决 "编译需要TBBConfig.cmake,但TBB 2020及older版本不生成.cmake文件"的问题-CSDN博客

Ubuntu18.04下安装与切换多个gcc和g++,以及gcc g++ 9.1.0的安装_ubunutu 18.04 切换 g++9-CSDN博客

// 查看所有gcc版本

ls /usr/bin/gcc*    


查看当前gcc版本
which gcc


设置优先级
sudo update-alternatives --install /usr/local/bin/gcc gcc /usr/bin/gcc-9 10




sudo update-alternatives --config gcc 


sudo update-alternatives --install /usr/local/bin/g++ g++ /usr/bin/g++-9 10
sudo update-alternatives --config g++

后面几行解决:

fatal error: execution: 没有那个文件或目录

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-9//注意gcc和g++都是9.0以上的版本 进行编译
sudo apt install g++-9  //github上缺少这一步,一直报错,用g++ --version 查看才知道需要安装 g++-9 

cd /usr/bin

sudo rm gcc g++
sudo ln -s gcc-9 gcc
sudo ln -s g++-9 g++ 


gcc -v
g++ -v

如何查看TBB是否安装成功:

cd ../examples/pipeline/square
make

查看结果

g++ -O2 -DNDEBUG  -o square square.cpp gen_input.cpp -ltbb -lrt  -std=c++11
./square 0 input.txt output.txt
serial run   time = 0.0591629
parallel run time = 0.0123664
elapsed time : 0.089502 seconds





卸载tbb

查看版本:发现是2017版。

dpkg -l | grep libtbb

ii libtbb2:amd64 2017~U7-8 amd64 parallelism library for C++ - runtime files

安装:

Ubuntu 安装旧版tbb(2019_U5)踩坑流程_tbb版本-CSDN博客

注意把2019换成你需要的版本。

下面这个不要用呀。

sudo apt install libtbb-dev

卸载:

sudo apt-get remove libtbb-dev

sudo apt-get remove libtbb2:amd64

卸载之后,重新安装高一点的版本。

官网下载最新版本:然后

mkdir build
cd build
cmake ..
make all
sudo make install


// 测试
cd ../example/test_all/fibonacci
cmake .
make
./fabonacci

Ubuntu 安装 tbb 步骤详解_ubuntu tbb-CSDN博客

也曾按照这个安装,最终我已经分不清,我到底安装的的哪个版本。




error: 'task' is not a member of 'tbb';

dpcpp my_app.cpp -DPSTL_USE_PARALLEL_POLICIES=0 # for libstdc++ 9
dpcpp my_app.cpp -D_GLIBCXX_USE_TBB_PAR_BACKEND=0 # for libstdc++ 10

'tbb::task' has not been declared - Intel Community

解决方法一:亲测有效。

#define PSTL_USE_PARALLEL_POLICIES 0
#define _GLIBCXX_USE_TBB_PAR_BACKEND 0

After exchanging <oneapi/dpl/execution > and *<oneapi/dpl/algorithm>,*everything is ok.

我没有尝试,大家可以试试,把低版本比如18.04默认的是tbb2017版本中的这俩文件替换一下。




解决方法二:亲测有效:

我参照:oneTBB-2021.11.0版本中,有example路径下test_all中fibonacci中的写法。

首先

mkdir build
cd build
cmake ..
make 
./fibonacci
// 发现可以跑通。说明我们tbb安装成功了。

我们参照fibonacci中的写法。修改我们自己源码中tbb的调用。

#include "oneapi/tbb/tick_count.h"
#include "oneapi/tbb/blocked_range.h"
#include "oneapi/tbb/concurrent_vector.h"
#include "oneapi/tbb/concurrent_queue.h"
#include "oneapi/tbb/concurrent_hash_map.h"
#include "oneapi/tbb/parallel_for.h"
#include "oneapi/tbb/parallel_reduce.h"
#include "oneapi/tbb/parallel_scan.h"
#include "oneapi/tbb/parallel_pipeline.h"
#include "oneapi/tbb/spin_mutex.h"
#include "oneapi/tbb/queuing_mutex.h"
#include "oneapi/tbb/global_control.h"

将我们ig_lio中用到的tbb的代码:tbb加上oneapi。亲测可用。

// #include <tbb/parallel_for.h>
// #include <tbb/parallel_reduce.h>

#include "oneapi/tbb/parallel_for.h"
#include "oneapi/tbb/parallel_reduce.h"

测试我们去跑oneTBB-2020_U3版本中的example中test_all中的fibonacci中发现,

他的写法还是原来老的写法,然后再看2020版本中Fibonacci.cpp,对于类的定义也不一样了,在里面定义了个task的类。这个类在新版中没有。两个版本的文件名称都不不一样。

我查阅新版本,并未找到这个task类。

附录:

Ubuntu 安装 tbb 步骤详解_ubuntu tbb-CSDN博客

相关推荐
yeyuningzi3 分钟前
Debian 12环境里部署nginx步骤记录
linux·运维·服务器
上辈子杀猪这辈子学IT21 分钟前
【Zookeeper集群搭建】安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作
linux·hadoop·zookeeper·centos·debian
minihuabei26 分钟前
linux centos 安装redis
linux·redis·centos
EasyCVR1 小时前
萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
运维·服务器·网络·人工智能·ffmpeg·音视频
lldhsds1 小时前
书生大模型实战营第四期-入门岛-1. Linux前置基础
linux
wowocpp2 小时前
ubuntu 22.04 硬件配置 查看 显卡
linux·运维·ubuntu
山河君2 小时前
ubuntu使用DeepSpeech进行语音识别(包含交叉编译)
linux·ubuntu·语音识别
鹏大师运维2 小时前
【功能介绍】信创终端系统上各WPS版本的授权差异
linux·wps·授权·麒麟·国产操作系统·1024程序员节·统信uos
筱源源2 小时前
Elasticsearch-linux环境部署
linux·elasticsearch
萨格拉斯救世主2 小时前
jenkins使用slave节点进行node打包报错问题处理
运维·jenkins