Eclipse-build-Konfiguration für OpenMP
Ich versuche zu lernen, OpenMP, beginnend mit dem folgenden einfachen snippet
#include <stdio.h>
#include <stdlib.h>
int main(void) {
#pragma omp parallel
printf("Hello OpenMP!\n");
return 0;
}
Einfach kompilieren von der Befehlszeile aus arbeitet:
cls ~/Desktop $ gcc -fopenmp HelloOpenMP.c -o HelloOpenMP
cls ~/Desktop $ ./HelloOpenMP
Hello OpenMP!
Hello OpenMP!
Allerdings verwende ich Eclipse mit CDT. Ich habe eine neue build-Konfiguration "OpenMP" und versucht, um die -fopenmp
flag unter "Sonstiges", kopieren Sie die anderen Einstellungen aus dem "Debug" - buildkonfiguration.
Build schlägt fehl mit
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
So, ich denke, das war nicht der richtige Ort, um die Option-fopenmp-compiler option? Welche Konfiguration sollte ich verwenden, um bauen mit OpenMP?
sollte es nicht im linker? Diese Verknüpfung
Du hast Recht, hinzufügen -fopenmp an den linker flags das problem behoben. Wusste nicht, ich hatte, um die Flagge zweimal.
Okay, ich werde die paste, als eine Antwort.
Sie können auch hinzufügen
gcc -o "HelloOpenMP" ./src/HelloOpenMP.o
wird zeigen, dass die openmp-Bibliothek ist nicht hier verlinkt.Du hast Recht, hinzufügen -fopenmp an den linker flags das problem behoben. Wusste nicht, ich hatte, um die Flagge zweimal.
Okay, ich werde die paste, als eine Antwort.
Sie können auch hinzufügen
-lgomp
an den linker flags statt, da -fopenmp
ist eine GCC-Option und wird nicht funktionieren, wenn ld
zur Verknüpfung der ausführbaren statt.InformationsquelleAutor clstaudt | 2012-10-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen
-fopenmp
- flag auf linker Abschnitt als gut.InformationsquelleAutor Raj