您可能会发现您必须与所使用的任何系统上的数学库链接,例如:
gcc -o myprog myprog.c -L/path/to/libs -lm
^^^ - this bit here.
包括标题让编译器知道函数的声明,但它并没有必然自动链接到执行该功能所需要的代码。
否则,您需要向我们展示您的代码,您的编译命令和您正在运行的平台(操作系统,编译器等)。
以下代码可以编译和链接:
#include
int main (void) {
int max = sqrt (9);
return 0;
}
请注意,某些编译系统取决于在命令行上给出库的顺序。那样的话,我的意思是它们可以按顺序处理这些库,并且只能使用它们来满足序列中该点上未解析的符号。
因此,例如,给定命令:
gcc -o plugh plugh.o -lxyzzy
gcc -o plugh -lxyzzy plugh.o
并且plugh.o需要xyzzy库中的某些内容,第二个可能无法正常工作。在列出库的那一刻,没有任何未解决的符号可以满足。
当从解析的符号plugh.o 都出现,为时已晚。