【问题标题】:Unfamiliar errors不熟悉的错误
【发布时间】:2012-11-08 17:37:45
【问题描述】:

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

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

【问题讨论】:

    标签: c multithreading unix ceil


    【解决方案1】:

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

    您似乎缺少链接到libm

    在您对gcc 的调用中添加选项-lm 应该可以解决这个问题。


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

    【讨论】:

    • 是的,刚刚想通了!谢谢 :) 我还找出了导致最后一个错误的原因,即使用 gcc 与 g++ 进行 AKA 编译(我将文件保存在错误的扩展名中)
    猜你喜欢
    • 1970-01-01
    • 2017-08-03
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2021-01-06
    • 2015-07-15
    • 1970-01-01
    相关资源
    最近更新 更多