Eclipse de configuration de la compilation pour OpenMP

Je suis en train d'apprendre OpenMP, à commencer par le simple suivant extrait de

#include <stdio.h>
#include <stdlib.h>

int main(void) {

    #pragma omp parallel
    printf("Hello OpenMP!\n");

    return 0;
}

Simplement une compilation à partir de la ligne de commande fonctionne:

cls ~/Desktop $ gcc -fopenmp HelloOpenMP.c -o HelloOpenMP
cls ~/Desktop $ ./HelloOpenMP 
Hello OpenMP!
Hello OpenMP!

Cependant, j'aimerais utiliser Eclipse avec le CDT. J'ai créé une nouvelle configuration de la compilation "OpenMP" et essayé d'ajouter l' -fopenmp drapeau sous "Divers", en copiant les autres paramètres de la "Debug" configuration de build.

Eclipse de configuration de la compilation pour OpenMP

L'échec de la construction avec

14:56:16 **** Incremental Build of configuration OpenMP for project HelloOpenMP ****
make all 
Building file: ../src/HelloOpenMP.c
Invoking: GCC C Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -fopenmp -MMD -MP -MF"src/HelloOpenMP.d" -MT"src/HelloOpenMP.d" -o "src/HelloOpenMP.o" "../src/HelloOpenMP.c"
Finished building: ../src/HelloOpenMP.c

Building target: HelloOpenMP
Invoking: MacOS X C Linker
gcc  -o "HelloOpenMP"  ./src/HelloOpenMP.o   
Undefined symbols for architecture x86_64:
  "_GOMP_parallel_end", referenced from:
      _main in HelloOpenMP.o
  "_GOMP_parallel_start", referenced from:
      _main in HelloOpenMP.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [HelloOpenMP] Error 1

Donc je suppose que ce n'était pas le bon endroit pour ajouter la -fopenmp option du compilateur? Quelle configuration dois-je utiliser pour construire avec OpenMP?

  • ne devrait-elle pas être dans l'éditeur de liens ainsi? Ce lien gcc -o "HelloOpenMP" ./src/HelloOpenMP.o ne montrons que la bibliothèque openmp n'est pas lié ici.
  • Vous avez raison, l'ajout d'-fopenmp à l'éditeur de liens drapeaux résolu le problème. Ne le savais pas, j'ai dû ajouter le drapeau à deux reprises.
  • Ok, je vais le coller comme une réponse.
  • Vous pouvez également ajouter -lgomp à l'éditeur de liens drapeaux au lieu depuis -fopenmp est un GCC drapeau et ne fonctionnera pas si ld est utilisée pour lier le fichier exécutable à la place.
InformationsquelleAutor clstaudt | 2012-10-04