【问题标题】:ld: undefined reference to symbol 'log2@@GLIBC_2.2.5'ld:未定义对符号“log2@@GLIBC_2.2.5”的引用
【发布时间】:2013-04-07 00:49:07
【问题描述】:

怎么了

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

似乎是使用log2(),但有什么问题?我实际上将它与 OpenMPI 代码一起使用,但评论这一行可以解决问题。

Full Source(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) 可以工作,但我不能传入变量?

【问题讨论】:

    标签: c mpi linker-errors


    【解决方案1】:

    为了链接libm,您需要添加-lm 参数,作为本文档; MPI under Linux in the Math Department 说:

    如果您的代码包含数学函数(如 exp、cos 等), 您需要链接到数学库 libm.so。这个做完了, 就像串行编译一样,通过将 -lm 添加到您的末尾 编译命令,即

    mpicc -o 示例 sample.c -lm

    【讨论】:

    • 谢谢,我已经解决了
    猜你喜欢
    • 2016-03-12
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 2014-07-11
    • 1970-01-01
    • 2020-11-19
    相关资源
    最近更新 更多