2012-10-04 6 views
6

Ich versuche, OpenMP zu lernen, mit dem folgenden einfachen Snippet AusgangEclipse-Build-Konfiguration für OpenMP

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

int main(void) { 

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

    return 0; 
} 

einfach von der Kommandozeile kompiliert funktioniert:

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

Allerdings würde Ich mag an benutze Eclipse mit CDT. Ich habe eine neue Build-Konfiguration "OpenMP" erstellt und versucht, das Flag -fopenmp unter "Miscellaneous" hinzuzufügen und die anderen Einstellungen aus der Build-Konfiguration "Debug" zu kopieren.

enter image description here

Der Build schlägt 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 

Also ich denke, das nicht der richtige Ort, war die -fopenmp Compiler-Option hinzufügen? Welche Konfiguration sollte ich zum Erstellen mit OpenMP verwenden?

+2

sollte es nicht auch im Linker sein? Diese Verknüpfung 'gcc -o" HelloOpenMP "./Src/HelloOpenMP.o' zeigt, dass die openmp-Bibliothek hier nicht verlinkt ist. – Raj

+0

Sie haben recht, das Hinzufügen von -fopenmp zu den Linkerflags hat das Problem behoben. Ich wusste nicht, dass ich die Flagge zweimal hinzufügen musste. – clstaudt

+0

Okay, ich werde das als Antwort einfügen. – Raj

Antwort

12

Fügen Sie die -fopenmp Flagge auch dem Linkerabschnitt hinzu.