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

相关推荐
朝九晚五ฺ2 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
自由的dream2 小时前
Linux的桌面
linux
xiaozhiwise2 小时前
Makefile 之 自动化变量
linux
Kkooe3 小时前
GitLab|数据迁移
运维·服务器·git
久醉不在酒3 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
意疏4 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
虚拟网络工程师5 小时前
【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)
运维·服务器·网络·数据库·mariadb
BLEACH-heiqiyihu5 小时前
RedHat7—Linux中kickstart自动安装脚本制作
linux·运维·服务器
一只爱撸猫的程序猿5 小时前
一个简单的Linux 服务器性能优化案例
linux·mysql·nginx