首先利用brew进行安装:
1 | brew install libomp |
完成之后,采用如下的测试代码,存储为hello.c
:
1 |
|
尝试利用gcc进行编译:
1 | gcc hello.c -fopenmp -o hello && ./hello |
诡异的事情出现了,会得到如下的结果,非常奇怪,gcc应该是支持这个选项的:
1 | clang: error: unsupported option '-fopenmp' |
从这个地方可以发现clang进行了报错,但是明明是使用gcc进行编译的,利用gcc -v
查看可以看到如下发现:
1 | Apple clang version 11.0.0 (clang-1100.0.33.17) |
这里名叫gcc的东西实际上是clang,所以正常使用gcc编译的时候实际上是用的clang???之后采用gcc-9来指定gcc进行编译,而不采用clang:
1 | gcc-9 hello.c -fopenmp -o hello && ./hello |
可以正常的执行并得到如下的结果:
1 | Hello from thread 1, nthreads 8 |
由于多线程并不能保证执行顺序,可以看到Hello的打印顺序是不一样的,到这里就可以愉快使用OpenMP了!