Jie*_*eng 20 c mpi linker-errors
什么错了
for (level = 1; level <= log2((double)size); level++)
^
Run Code Online (Sandbox Code Playgroud)
看起来像是从使用,log2()但什么是错的?我实际上正在使用它与OpenMPI代码,但注释这一行修复了一些事情.
完整来源(http://pastie.org/7559178)见第40行
[jiewmeng@JM Assign3]$ mpicc -o cpi cpi.c && mpirun -np 16 cpi
/usr/bin/ld: /tmp/cca9x4he.o: undefined reference to symbol 'log2@@GLIBC_2.2.5'
/usr/bin/ld: note: 'log2@@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
Run Code Online (Sandbox Code Playgroud)
似乎log2(4)会工作,但我不能传递变量?
Sha*_*our 41
在为了链接libm你需要添加-lm参数,作为这个文件; 数学系Linux下的MPI说:
如果您的代码包含数学函数(如exp,cos等),则需要链接到数学库libm.so. 这样做就像串行编译一样,通过在编译命令的末尾添加-lm,也就是说,
mpicc -o sample sample.c -lm