【发布时间】:2012-10-25 00:16:18
【问题描述】:
在 gcc 4.6.3 中使用 -lm 链接 math.lib 的方式有所不同。
它用于工作 gcc -lm file.c,但在 gcc 4.6.3 中它的 gcc file.c -lm。
这种变化的原因是什么?或者它是一个错误?
谢谢
这是代码的一部分。
float i = 100;
printf("%f", sqrt(i));
return 0;
我是这样遵守的
gcc -lm mat.c
/tmp/ccPxTEjS.o:在函数'main'中:
mat.c:(.text+0x2c): undefined reference to `sqrt'
collect2: ld 返回 1 个退出状态
操作系统:Ubuntu 12.04
【问题讨论】:
-
这真让我吃惊。你确定吗?如果您在 4.6.3 上运行
gcc -lm file.c,实际会发生什么?您没有具体说明问题所在。 -
问题成立。会发生什么?
-
@JonathonReinhart 使用示例代码对问题进行了更改。
-
@AnishChandran:我环顾四周,得出了相互矛盾的结论:有些人指责 gcc,有些人指责 binutil 链接器。我自己也不知道确切的答案。 Basile Starynkevitch 的建议可能是正确的。