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.

Eclipse-build-Konfiguration für OpenMP

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 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

Schreibe einen Kommentar