如何在C ++ 17中使用<execution>库

时间:2019-07-17 22:30:17

标签: c++ c++17

学习如何在c ++ 17中使用执行库。我正在使用Linux,但也在Mac上尝试过。我收到此错误:

  

致命错误:找不到“执行”文件

当我在两个操作系统中都进行编译时。

我宁愿在我键入的地方坚持使用Linux:

g++ -g -std=c++17 ModuleDevelopmentStage13.cc -lboost_system -lboost_thread -pthread

也许我需要在这里的-l....参数中添加更多的库。我是C ++的新手,不确定在哪里查找要添加的内容?我已经安装了LLVM,并在类似的帖子上尝试了一些选项,但是没有运气。有什么建议吗?

所以在我的Mac上,我做了gcc -v并得到了:

gcc -v Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1 Apple LLVM version 10.0.0 (clang-1000.11.45.5) Target: x86_64-apple-darwin18.6.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

好,现在进行更新-我现在切换到通过自制软件安装的gcc-9.1。

没有像以前那样的“包含”错误,但是当我尝试编译使用c ++ 17库的简单代码示例时,我现在遇到了这个问题:

g++-9 -std=c++17 example.cc In file included from /usr/local/Cellar/gcc/9.1.0/include/c++/9.1.0/pstl/parallel_backend.h:14, from /usr/local/Cellar/gcc/9.1.0/include/c++/9.1.0/pstl/algorithm_impl.h:25, from /usr/local/Cellar/gcc/9.1.0/include/c++/9.1.0/pstl/glue_execution_defs.h:52, from /usr/local/Cellar/gcc/9.1.0/include/c++/9.1.0/execution:3, from example.cc:6: /usr/local/Cellar/gcc/9.1.0/include/c++/9.1.0/pstl/parallel_backend_tbb.h:19:10 fatal error: tbb/blocked_range.h: No such file or directory 19 | #include <tbb/blocked_range.h> | ^~~~~~~~~~~~~~~~~~~~~ compilation terminated.

我找到了缺少的库,并进行了如下编译:

g++-9 -std=c++17 example.cpp -I/usr/local/Cellar/tbb/2019_U8/include/ -I/usr/local/Cellar/tbb/2019_U8/lib/

我收到以下错误: Undefined symbols for architecture x86_64: "tbb::interface7::internal::task_arena_base::internal_current_slot()", referenced from: tbb::interface7::task_arena::current_thread_index() in ccnPixdL.o "tbb::interface7::internal::isolate_within_arena(t..........

跟着许多类似的行.....感觉就像我接近了,但不知道如何继续前进?

g++-9 -std=c++17 example.cpp -I/usr/local/Cellar/tbb/2019_U8/include/ -L/usr/local/Cellar/tbb/2019_U8/lib/ -ltbb

解决

1 个答案:

答案 0 :(得分:4)

您需要安装tbb库。

在Ubuntu / Linux上:

$ sudo apt update
$ sudo apt install libtbb-dev

在带有Homebrew的Mac上:

$ brew install tbb

然后在g ++中链接运行时库:

g++ -g -std=c++17 ModuleDevelopmentStage13.cc -lboost_system -lboost_thread -pthread -ltbb