我在 c 中使用 sqrt() 时遇到问题。
我正在尝试做这样的事情:
int a;
a = sqrt(9);
等等
我被限制使用:
gcc -ansi -Wall -pedantic oneFile.c anotherFile.c thirdFile.c -o outputFileName
如何在不使用 -lm 命令的情况下进行编译?
是的,我有#include!
有什么办法可以解决这个问题并仍然使用 sqrt() 吗?
谢谢
最佳答案
如果没有 -lm
就无法编译它。这是链接器针对内置数学库进行编译的指令。光说 #include <math.h>
是不够的。 ,因为那只是一个头文件 - 其中没有代码,它只是告诉编译器您正在使用的函数是什么样的。您仍然需要在代码中实际实现该函数,并且 -lm
基本上告诉链接器 look in libm, check to see if it has any functions that we haven't found yet
。如果您不查看那里,您将永远无法实际执行 sqrt
因为代码根本不在您的程序中。
如果您正在做家庭作业并且仅限于使用该命令行,那么您的作业的一部分可能是不使用数学库中的任何内容,因此您可能需要考虑另一种方法.
关于在c中使用sqrt()编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17969168/