【发布时间】:2011-11-21 04:58:11
【问题描述】:
我在我的应用程序的链接过程中发现了一个问题。我对 gcc 4.5 没有同样的看法。它尝试使用以下命令链接数学库。
gcc -Wall -Wno-unused -MD -o mems_seektest mems_seektest.o -lm -L. -g -DASSERTS -I../src// -I../ -I../src//src -DDEBUG -lmems_internals
并报告以下错误消息:
undefined reference to `sqrt'
有什么想法吗?
【问题讨论】:
-
我无法重现这个(在 Linux 中使用 gcc 4.6.2),这个代码是用 gcc 4.5 构建的吗?
-
@birryree 当然你不能,如果你使用像
float test = sqrt(5);这样的东西,因为 gcc 会通过在编译时计算结果来优化它。尝试使用float test = sqrt(a);之类的东西,其中 a 是一个变量,其值要到运行时才能知道。 -
@PengyuCHEN - 我没有使用常量,我知道 gcc 的常量折叠。正如你所看到的,他已经在使用
-lm标志,所以你的答案是重复他所做的事情。 -
@birryree 是的,伙计,我注意到在发布答案后,现在对此感到抱歉:-(