0

我正在编写一个程序来处理我几乎完全可以工作的线程。不幸的是,我遇到了一个我不熟悉的语法错误(重复 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 是一个 double 值,我需要四舍五入。有什么建议么?我已经尝试用 Google 搜索这些错误,但与大多数错误一样,很难找到与您的模式相同的特定示例。

编辑:我已经解决了所有与 ceil 相关的错误(在命令行上使用 -lm)但是最后一个错误仍然存​​在,我不知道它是什么意思,或者如何修复它。

4

1 回答 1

3

将未定义的引用引用到ceil()

您似乎缺少链接到libm.

-lm在您的呼叫中添加选项gcc应该可以解决此问题。


#includeingmath.h是为了让编译器了解ceil()' 的定义。链接器随后需要知道ceil()的实现实际驻留在哪里,即在libm.

于 2012-11-08T17:41:51.927 回答