-fopenmp标志在编译和链接

时间:2016-12-30 23:09:32

标签: compilation linker openmp

我有这个openmp代码

#include <omp.h>
#include <stdio.h>

int main()
{
  #pragma omp parallel
  {
    fprintf(stderr, "thread %d\n", omp_get_thread_num());
  }

  return 0;
}

当我编译并链接并使用-fopenmp

gcc-6 -std=c99 -Wall -Wextra -pedantic -fopenmp -Iinclude -c -o build/main.o src/main.c
gcc-6 -o bin/main  build/main.o  -fopenmp

代码工作

$ ./bin/main 
thread 0
thread 1
thread 2
thread 3

但是,当我只将标志放在链接

中时,请不要这样做
gcc-6 -std=c99 -Wall -Wextra -pedantic -Iinclude -c -o build/main.o src/main.c
src/main.c: In function 'main':
src/main.c:6:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
   #pragma omp parallel
gcc-6 -o bin/main  build/main.o  -fopenmp

代码工作但不是并行

$ ./bin/main 
thread 0

为什么我需要在编译和链接时添加-fopenmp

1 个答案:

答案 0 :(得分:2)

  

为什么我需要在编译和链接时添加-fopenmp?

因为在编译时需要两个(以启用#pragma omp处理)和链接时(链接所需的支持库)。

相关问题