Frage: Sehr geehrter Techglimpse, ich versuche, ein MPI-Programm (ein einfaches Beispielprogramm, das den PI-Wert berechnet) mit MPICH Version 1.2.6 zu kompilieren. Unten ist der Befehl, den ich zum Kompilieren verwendet habe:
mpicc -o a.out pi.c
Der Befehl schlug jedoch mit einer Fehlermeldung als „undefinierter Verweis auf `sqrt‘ fehl “. Ich habe den Code überprüft und er hat math.h definiert. Was könnte das Problem sein? – Surya
Die ausführliche Fehlermeldung:
$ mpicc -o mpi-pi pi.c /tmp/ccwuQwDw.o: In function `main': pi.c:(.text+0x15f): undefined reference to `sqrt' collect2: ld returned 1 exit status
Lösung:
Surya, du musst die Mathematikbibliothek verlinken während der Kompilierung wie unten gezeigt:
$ mpicc -o a.out pi.c -lm
Die libm.so befindet sich unter /usr/lib . Der Speicherort kann jedoch von Maschine zu Maschine variieren.
$ whereis libm.so libm: /usr/lib/libm.so /usr/lib/libm.a
Bei Option -lm , ‘l ‘ verweist auf das Präfix ‘lib’ und ‘m ‘ für Mathe.