LD:未定义的引用符号 'LOG2 @@ GLIBC_2.2.5'(ld: unde

2019-08-31 05:21发布

什么错

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

看起来似乎使用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

好像log2(4)工作,但我不能在一个变量传递?

Answer 1:

在以链接libm需要添加-lm参数,如本文件; MPI在数学系在Linux下称:

如果你的代码中包含的数学函数(如EXP,COS等),您需要链接到数学库libm.so. 这样做,就像串行编制,加入-lm到您的编译命令结束,也就是说,

mpicc -o样品sample.c文件-lm



文章来源: ld: undefined reference to symbol 'log2@@GLIBC_2.2.5'