2013-04-15 13 views
12

Co złegold: niezdefiniowane odniesienia do symbolu 'log2 @@ GLIBC_2.2.5'

for (level = 1; level <= log2((double)size); level++) 
         ^

Wydaje się jej używania log2() ale co jest nie tak? Używam go z kodem OpenMPI, ale komentowanie tej linii naprawia pewne rzeczy.

Full Source (http://pastie.org/7559178) linia See 40

[[email protected] Assign3]$ mpicc -o cpi cpi.c && mpirun -np 16 cpi 
/usr/bin/ld: /tmp/cca9x4he.o: undefined reference to symbol '[email protected]@GLIBC_2.2.5' 
/usr/bin/ld: note: '[email protected]@GLIBC_2.2.5' is defined in DSO /usr/lib/libm.so.6 so try adding it to the linker command line 
/usr/lib/libm.so.6: could not read symbols: Invalid operation 
collect2: error: ld returned 1 exit status 

Wygląda log2(4) będzie działać, ale nie mogę przejść w zmiennej?

Odpowiedz

27

W celu połączenia libm należy dodać argument -lm, jak ten dokument; MPI under Linux in the Math Department mówi:

Jeśli kod zawiera funkcje matematyczne (jak exp, cos itp), trzeba połączyć z matematyki biblioteki libm.so. Odbywa się to, podobnie jak dla szeregowego kompilacji, dodając -lm do końca polecenia kompilacji , czyli

mpicc -o próbka sample.c -lm

+0

Dzięki, mam naprawiono to –

Powiązane problemy