PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gcc-4.3.2 kompilieren von OpenMP-Programmen



Ahnungsloser
20-12-2008, 12:15
Hallo,

beim Arbeiten auf einem 2-Kern Prozessor Rechner gelingt es mir ohne Probleme mit dem gcc-4.2.1 compiler Testprogramme mit der Bibliothek omp.h von OpenMP zu kompilieren. Dazu verwende ich den Befehl:
gcc-4.2 -Wall -fopenmp -o hello_par hello_par.c

Nun habe ich die Möglichkeit bekommen auf einem 8-Kern Prozessor Rechner meine Testprogramme auszuführen, allerdings ist hier der gcc-4.3.2 compiler installiert.
Mein Problem ist, dass es mir nicht gelingt das Programm zu kompilieren.
Folgende Varianten habe ich ausprobiert:

gcc-4.3 -Wall -fopenmp -o hello_par hello_par.c
-bash: gcc-4.3: command not found //Das bedeutet doch das der Compiler nicht gefunden wird?

gcc -4.3 -Wall -fopenmp -o hello_par hello_par.c
cc1: error: unrecognized command line option "-fopenmp"

gcc -4.3 -Wall -openmp -o hello_par hello_par.c
hello_par.c:1:17: error: omp.h: No such file or directory

Kann es sein, dass der gcc 4.3 compiler nicht erkannt wird? Leider habe ich
keine Admin-Rechte auf dem modernen Rechner, sonst würde ich den älteren gcc 4.2 compiler installieren.

Ich wäre für eure Hilfe sehr dankbar!

anda_skoa
20-12-2008, 23:25
Normalerweise muss man keine Versionsnummer angeben, praktisch nur wenn mehrere Versionen installiert sind.

Probier einfach mal nur "gcc" als Befehl, bzw. kannst du mit


$ gcc --version

Leicht prüfen, ob nur "gcc" die von dir gewünschte Version ist.

Ciao,
_

Ahnungsloser
21-12-2008, 13:38
Hallo anda_skoa,

mit dem Befehl gcc --version gibt er mir 'gcc-4.0.1' aus. Also muss ich zur Kompilierung die Versionsnummer mitgeben damit er den richtigen Compiler benutzt.

Ich fürchte der 4.3.2 compiler ist nicht richtig installiert, da auf den Befehl

gcc-4.3
mit '-bash: gcc-4.3: command not found'

geantwortet wird, statt der Ausgabe 'no input files'.

Muss ich vielleicht den Pfad zum 4.3er compiler angeben, damit dieser gefunden wird bzw. eine Umgebungsvariable eingeben?

undefined
21-12-2008, 14:55
ls /usr/lib*/libgomp.spec
rpm -qf `ls /usr/lib*/libgomp.spec`

Wenn nicht vorhanden ist die OpenMP Unterstützung nicht Installiert.

Ahnungsloser
23-12-2008, 11:01
Mittlerweile habe ich den Pfad der zum neuen Compiler führt, in die Umgebungsvariale aufgenommen, mit

export PATH=$HOME/gcc-4.3/bin:$PATH

der Aufruf des neuen Compilers funktioniert jetzt auch, aber leider findet er nicht die omp.h Bibliothek, sie ist aber unter gcc-4.3/include vorhanden.
Habe verscucht analog zum Compilerpfad den Pfad zur Bibliothek anzugeben, wird aber leider trotzdem nicht erkannt.

Handelt es sich hierbei um dynamische Bibliotheken und wie kann ich auf sie verweisen?

Der Tipp von undefined mit dem Befehl

'ls /usr/lib*/libgomp.spec'

ergibt: No such file or directory

aber die omp.h Bibliothek ist vorhanden

undefined
23-12-2008, 14:33
Dann ist dein GCC nicht richtig Installiert - lass mich raten Gentoo?
Du musst Normaler weise außer -fopenmp nichts angeben, den rest macht der Compiler wenn die Spezifikation Installiert ist.

ls /usr/lib | grep -e 'gomp'
libgomp.a
libgomp.so
libgomp.so.1
libgomp.so.1.0.0
libgomp.spec
cat /usr/lib/libgomp.spec
# This spec file is read by gcc when linking. It is used to specify the
# standard libraries we need in order to link with -fopenmp.
*link_gomp: -lgomp %{static: -lrt }

peschmae
28-12-2008, 06:25
Habe verscucht analog zum Compilerpfad den Pfad zur Bibliothek anzugeben, wird aber leider trotzdem nicht erkannt.
....
aber die omp.h Bibliothek ist vorhanden

Also omp.h ist keine Bibliothek sondern ein Header. Infolgedessen nützt es genau nichts wenn du mit dem Bibliothekspfad herumspielst. Vielmehr solltest du dem Compiler ein "-I/wo/auch/immer/das/header/rumliegt/" mitgeben, damit er das Header findet.

/wo/auch/immer/das/header/rumliegt/gmp.h ist der Pfad zu gmp.h
-I ist ein grosses i

Alternativ kannst du auch die CFLAGS bzw. CXXFLAGS um einen -I Eintrag erweitern.

MfG Peschmä