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博客

相关推荐
KYGALYX1 小时前
在Linux中备份msyql数据库和表的详细操作
linux·运维·数据库
余—笙1 小时前
Linux(docker)安装搭建CuteHttpFileServer/chfs文件共享服务器
linux·服务器·docker
lang201509281 小时前
Linux高效备份:tar与gzip完全指南
linux·运维·服务器
IDOlaoluo1 小时前
OceanBase all-in-one 4.2.0.0 安装教程(CentOS 7/EL7 一键部署详细步骤)
linux·centos·oceanbase
wanhengidc2 小时前
云手机的基本原理
运维·服务器·游戏·智能手机·云计算
篙芷2 小时前
两台服务器 NFS 共享目录实战
运维·服务器
catoop3 小时前
在 WSL 的 Ubuntu 中安装和配置 SSH 服务
linux·ubuntu·ssh
Hard but lovely3 小时前
linux: centos 软件包管理 yum源
linux·运维·centos
悲伤小伞3 小时前
Linux_Socket_UDP
linux·服务器·网络·c++·网络协议·udp
2301_816073833 小时前
Chrony服务器
运维·服务器