Linux 下编译 Thread Building Blocks TBB

不得不说,什么库如果不自己编译一遍,完全不知道什么坑

就拿TBB来说吧,博客上很多人都试过,也都成功过,我想照抄都不行。就连库上下载的代码都不一样。后来才发现,库都不是同一个。

行吧,既然如此,认了吧!

首先,下载库,我用的是这个:(千万不要去下载master,找个releases下吧,master上的未必能编译过,而且那个不是普通用户的)

https://github.com/oneapi-src/oneTBB/releases/tag/v2020.3

第二,解压编译

解压后里面就是一堆目录文件了,看到Makefile,心里开心多了。

直接在解压后的目录下,有build、src等,关键是有个Makefile。

键入: make

结果发现报错了。

build/common.inc:74:*** "" isnot supported. Add build/.inc file with os-specific seetings . Stop

显然,是说os选择配置问题。打开common.inc 看74行,

error  tbb_os  is not supported……………………云云

那就是说tbb_os没有给对了。那就找到这个变量,在这个文件第15行,往下有几个判断语句。

ifndef tbb_os

  # Windows sets environment variable OS; for other systems, ask uname
  ifeq ($(OS),)
    OS:=$(shell uname)
    ifeq ($(OS),)
      $(error "Cannot detect operating system")
    endif
    export tbb_os=$(OS)
  endif

  ifeq ($(OS), Windows_NT)
    export tbb_os=windows
  endif
  ifeq ($(OS), Linux)
    export tbb_os=linux
  endif
  ifeq ($(OS), Darwin)
    export tbb_os=macos
  endif

endif # !tbb_os

显然,要求有这个变量,那么就加一个吧;

键入:make -j  tbb_os=linux 

(-j是使用多线程,加快编译)

然后………………还是错…………,这个时候,跟另外一个教程对上了。

https://blog.csdn.net/u010793236/article/details/74010571?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160645280919724848147948%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=160645280919724848147948&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v28-8-74010571.first_rank_ecpm_v3_pc_rank_v2&utm_term=tbb++%E7%BC%96%E8%AF%91&spm=1018.2118.3001.4449

这个错,博主是注释掉这几行,我在想,有没有办法保留?注释掉会不会有其它问题?比如功能缺少功能?加速不足?

https://blog.csdn.net/xiaoting451292510/article/details/106782342

这篇文章里说了很多编译选项。-mrtm应该是cpu性能的一项。既然本机不支持,暂先去掉。

直接去掉不知道会不会有问题,那我就把前几行的-fopenmp放到-mrtm这里,就相当于-fopenmp被写了两次,应该也不会错。openmp是并行计算的库,感兴趣可以另外看,也可以实现并行加速。

继续键入:make -j  tbb_os=linux  

几秒钟,搞定了,提示编译完成,在build里有了。so和.so.2等文件。把其它.d  .o的文件都扔了吧。

库生成好了,大功告成!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值