c++ - 需要帮助让英特尔 TBB 正常工作吗?

标签 c++ c++11 tbb

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

最佳答案

一些事情...

检查包上的选项

在安装任何 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 放置 header 的地方,你会看到:

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 header 位于 /usr/local/include/tbb(这是指向 homebrew 的 Cellar 的符号链接(symbolic link)) ,因此您需要确保您的编译器正在查找 /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

关于c++ - 需要帮助让英特尔 TBB 正常工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39866845/

相关文章:

c++ - 我可以要求 VC++ 链接器忽略未解析的外部吗?

c++ - 一个类只能被另一个类访问

c++ - 在成员函数上启动线程时不希望的析构函数调用

c++ - 使用 std::shared_ptr 对象实例创建 boost::thread

c++ - 使用 boots::spirit::qi 进行解析的 TBB 并行化

opencv - 构建OpenCV 2.4.10 + Windows 7 + Visual Studio 2013,指导和错误解决

c++ - 如何修复段错误(核心转储)?

c++ - 声明为 float& 类型的引用数组

C++ 在虚方法中使用捕获 lambda

c++ - 如何删除/取消来自 tbb::flow::graph 的消息?