首页 > 解决方案 > 获取“collect2:错误:ld 返回 1 个退出状态”

问题描述

当我尝试运行几乎所有代码无法弄清楚原因时,我看到了此错误消息

 collect2: error: ld returned 1 exit status

例如当我运行这个简单的代码

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

int main() { 

  printf ("Hello, world:"); 
  #pragma omp parallel 
    printf (" %d", omp_get_thread_num ()); 
  printf ("\n"); 
  return 0; 
}

尝试了其他简单的代码,但没有任何效果

标签: cmultithreadingparallel-processingopenmp

解决方案


您需要使用 flag 编译代码-fopenmp。例如:

gcc -fopenmp -O3 -w -Wall -pedantic main.c

源代码可以阅读:

启用 OpenMP

要激活 C/C++ 和 Fortran 的 OpenMP 扩展,必须指定编译时标志 -fopenmp。这将启用 C/C++ 中的 OpenMP 指令 #pragma omp 和自由格式的 !$omp 指令,固定格式的 c$omp、*$omp 和 !$omp 指令,自由格式的 !$ 条件编译标记和 c$、* $ 和 !$ 固定形式的标记,用于 Fortran。该标志还安排 OpenMP 运行时库(运行时库例程)的自动链接。


推荐阅读