我正在编写一个处理线程的程序,我几乎完全可以使用它。不幸的是,我遇到了一个我不熟悉的语法错误(重复4次)。这是我的编译命令的快速剪辑,以及随后的错误:
gcc -o threads threads.cpp -pthread<br>
/tmp/ccy8maS0.o: In function `tenPercentA()':
threads.cpp:(.text+0xde): undefined reference to `ceil'
/tmp/ccy8maS0.o: In function `tenPercentB()':
threads.cpp:(.text+0x1c6): undefined reference to `ceil'
/tmp/ccy8maS0.o: In function `fiftPercentC()':
threads.cpp:(.text+0x2ae): undefined reference to `ceil'
/tmp/ccy8maS0.o: In function `fiftPercentD()':
threads.cpp:(.text+0x396): undefined reference to `ceil'
/tmp/ccy8maS0.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
我已经将math.h库包含在我的程序中,并且我正在使用正确的语法进行调用:
ceil(tempA);
凡tempA是双倍持有我需要四舍五入的值。
有什么建议?我试过谷歌这些错误但是,像大多数错误一样,很难找到与你的错误具有相同模式的具体例子。
编辑:我已经解决了所有与ceil相关的错误(在命令行中使用-lm)但是最后一个错误仍然存在,我不知道它意味着什么,或者如何解决它。
答案 0 :(得分:3)
将未定义的引用引用到ceil()
:
您似乎缺少与libm
链接。
在您对-lm
的调用中添加选项gcc
可以解决此问题。
#include
ing math.h
是让编译器了解ceil()
的定义。然后,链接器需要知道ceil()
实现的实际位置,即libm
。