事情的起因是我需要编译一个叫“Accel‑Align”的工具,它里面用的tbb依赖已经过时了,每次编译时候都会报错找不到tbb/task_scheduler_init。而我之前已经在服务器中安装了新版的tbb,于是就要重新安装旧版的tbb。
安装过程
安装过程网上有挺多的教程,讲的都比较详细,这里总结一下:
1 下载源码安装包
这里下载source code的,上面的貌似不是安装包。
下载后解压里面是这样的。
2 编译安装
第一个坑就在README问文件里面,它这里说用要先用gmake,然后我用了gmake发现也没编译成功。
后面还是跟着网上已有的教程:
先make all编译所有的模块,单纯的make会导致编译出来的模块不完整。
然后编译好的中间文件和库文件都存在build目录下后缀是release文件夹里。
第二个坑在于tbb旧版本是没有自动安装脚本,需要手动配环境。过程如下:
配置环境变量
要按照顺序执行下面列出的两个脚本,然后环境变量就自己配上了
/oneTBB-2019_U5/build/generate_tbbvars.sh
/oneTBB-2019_U5/build/tbbvars.sh
手动把动态链接库复制到/usr/lib
cd linux_intel64_gcc_cc11_libc2.35_kernel5.15.0_release //这里的文件名视不同环境而定
sudo cp *.so /usr/lib
sudo cp *.so.2 /usr/lib
sudo /sbin/ldconfig
最后在include目录下把所有所有文件复制到/usr/local/include中。
cd include
sudo cp -rf ./* /usr/local/include
注意这里要全都复制过去,不然的话/usr/local/include的头文件会不全。
到这一步的话基本上就安装完成了。
其他的坑
由于之前我是安装了其他版本的tbb,这里记录一下怎么其他版本要怎么卸载。
如果是one-api安装的
使用export
命令可以看到当前系统的环境变量,可以看到通过one-api安装的tbb包的路径。
我是直接顺着路径把/opt/intel/oneapi/
路径下的tbb文件夹删除了,后面就可以重新部署环境变量,部署完就可以正常使用旧版本的tbb了。
如果是apt-get安装的
那就用dpkg -l | grep libtbb
查看已经安装的包。我这边已经卸载掉了,就拿含有lib的包来举例,包的名称均在第二列,也就是图中圈住的,在ii的右边。
然后用sudo apt-get remove 包名
,就可以卸载掉。
参考博客
TBB安装与卸载 https://blog.csdn.net/weixin_41012767/article/details/135147314
Intel TBB库的编译安装
https://zhuanlan.zhihu.com/p/480823197
Linux下TBB安装及编译
https://blog.csdn.net/u010793236/article/details/74010571