【问题标题】:Need help getting intel TBB working?需要帮助英特尔 TBB 工作吗?
【发布时间】:2016-10-05 06:28:53
【问题描述】:

我在我的 mac os sierra 设备上运行了 brew install tbb。运行此之后,我应该能够将#include 包含到我的 c++ 项目中,对吧?由于某种原因,当我编译这些文件时没有找到。帮助将不胜感激

【问题讨论】:

  • 嗨。感谢您的回复。我为自己的应用程序编写了一个并发队列实现,并希望针对 intel tbb 的并发队列对其进行测试。我使用 OS X 山脉。我只是安装了自制软件,然后在终端中运行了“brew install tbb”。我假设这设置了所有环境变量,什么不是?然后,当我尝试通过包含语句访问 concurrent_queue.h 标头时,我收到错误:/Users/irtazasafi/ClionProjects/as2/main.cpp:7:9: fatal error: 'concurrent_queue.h' file not found跨度>
  • 我都试过了。当我尝试 时,它仍然找不到该文件。 Brew 说它已经安装(tbb-4.4-20160916 已经安装)。

标签: c++ c++11 tbb


【解决方案1】:

一些事情......

检查软件包选项

在安装任何homebrew 软件包之前,请养成检查可用选项的习惯,而不仅仅是接受默认选项。它通常可以让您深入了解您不知道的可用功能。所以,对于tbb

brew options tbb

输出

--c++11
    Build using C++11 mode

所以,它可能值得使用:

brew install tbb --c++11

brew reinstall tbb --c++11

先自己找包含文件和库

如果您尝试包含头文件,请先尝试自己查找,使用find

find /usr /opt concurrent_queue.h

输出

/usr/local/Cellar/tbb/4.4-20160916/include/tbb/concurrent_queue.h

所以我的系统上只有一个concurrent_queue.h。现在我们需要告诉编译器如何找到它。如果你查看/usr/local/include,这是homebrew 放置标题的地方,你会看到:

ls -l /usr/local/include | grep tbb
lrwxr-xr-x    1 mark  admin    38  5 Oct 09:10 tbb -> ../Cellar/tbb/4.4-20160916/include/tbb

因此,tbb 标头位于/usr/local/include/tbb(这是指向homebrew 的地窖的符号链接),因此您需要确保您的编译器正在查找/usr/local/include

g++-6 -I/usr/local/include ...

请记住,您可以使用 -v 检查编译器的位置,如下所示:

g++-6 -v ...

一旦你帮助编译器找到了头文件(#includes),你就需要帮助链接器找到库,所以你的命令会变成:

g++-6 -I/usr/local/include program.cpp -o program -L /usr/local/lib -ltbb

【讨论】:

  • find /usr /opt concurrent_queue.h 说我的磁盘上没有 concurrent_queue.h。
  • Irtazas-MacBook-Pro:~ irtazasafi$ brew install tbb --c++11 警告:tbb-4.4-20160916 已经安装
  • 对不起,我的意思是find /usr -name concurrent_queue.h
  • 所以,如果您使用的是g++,请尝试g++ -std=c++11 main.cpp -I /usr/local/include -o main -ltbb
  • 酷 - 我们快到了!只需添加-L /usr/local/lib
猜你喜欢
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 2023-03-25
  • 2016-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
相关资源
最近更新 更多