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.
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 sild
est utilisée pour lier le fichier exécutable à la place.
Vous devez vous connecter pour publier un commentaire.
Ajouter
-fopenmp
drapeau de l'éditeur de liens section.