C中幂函数的未定义参考错误

C中幂函数的未定义参考错误,c,gcc,pow,C,Gcc,Pow,可能重复: 我使用的是GCC4.6.1 代码段: 终端: 如果我将x替换为2,那么它将以预期的方式执行。pow函数不接受变量作为参数吗 注意:我已将stdio.h和math.h包含在源文件中。您需要将-lm命令行开关添加到数学库中的链接-l。。。指库中的链接;m是数学库: gcc power.c -lm -o power 您需要将-lm命令行开关添加到数学库-l。。。指库中的链接;m是数学库: gcc power.c -lm -o power pow函数是数学库的一部分。因此,编译器的调用

可能重复:

我使用的是GCC4.6.1

代码段:

终端:

如果我将x替换为2,那么它将以预期的方式执行。pow函数不接受变量作为参数吗

注意:我已将stdio.h和math.h包含在源文件中。

您需要将-lm命令行开关添加到数学库中的链接-l。。。指库中的链接;m是数学库:

gcc power.c -lm -o power
您需要将-lm命令行开关添加到数学库-l。。。指库中的链接;m是数学库:

gcc power.c -lm -o power

pow函数是数学库的一部分。因此,编译器的调用应如下所示:

gcc power.c -o power -lm

其中-lm是指示链接器与系统上的数学库进行链接的开关。

pow函数是数学库的一部分。因此,编译器的调用应如下所示:

gcc power.c -o power -lm


其中-lm是指示链接器与系统上的数学库进行链接的开关。

或者更确切地说是gcc power.c-lm-o power。lib必须位于源文件之后。这不是参数的正确顺序。见@ruakh-无变化。收到了相同的错误消息。@JamesMcLaughlin-成功了!但是我可以知道为什么我需要添加那个swith-lm吗?2如果这一切都是关于链接库,那么当我用任何常量编号替换x时,为什么会执行它?@AvinashSonawane:这是因为GCC会优化掉对pow3的调用,2,用它的结果替换它,所以它永远不会到达链接器。或者更确切地说,GCC power.c-lm-o power。lib必须位于源文件之后。这不是参数的正确顺序。见@ruakh-无变化。收到了相同的错误消息。@JamesMcLaughlin-成功了!但是我可以知道为什么我需要添加那个swith-lm吗?2如果这都是关于链接库的,那么当我用任何常量编号替换x时,为什么会执行它?@AvinashSonawane:那是因为GCC会优化掉对pow3的调用,2,用它的结果替换它,所以它永远不会到达链接器。如果你有pow3,2,编译器可以直接计算它,而不必调用函数。如果你在源文件中包含stdio.h和math.h,那么在代码中向我们展示它,而不是向我们展示不完整的代码,然后告诉我们缺少什么。@KeithThompson-对不起。但include这个词似乎是粗体的,实际上并不适合粗体字。所以我删除了include行,但我提到我已经在note下包含了这两个库。如果你有pow3,2,编译器可以直接计算,而不需要调用函数。如果你在源文件中包含stdio.h和math.h,然后在代码中向我们展示,而不是向我们展示不完整的代码,然后告诉我们缺少什么。@KeithThompson-对不起。但include这个词似乎是粗体的,实际上并不适合粗体字。所以我删除了include行,但我提到我已经在note下包含了这两个库。@Daniel它成功了!但是我可以知道为什么我需要添加那个swith-lm吗?2如果这都是关于链接库的,那么当我用任何常量编号替换x时,为什么会执行它。?3为什么在链接其他库(如stdio.h)时不必添加此swith?gcc总是隐式地将源代码链接到标准C库。显然,您是用C语言编程的,所以您很可能会使用这个库,所以每次在命令行中添加一个额外的-lc会很奇怪。如果将“x”替换为常数,编译器(知道pow函数的作用)会将其转换为常数,并避免在运行时实际调用该函数。@Daniel-你是说math.h不像stdio.h那样是标准C库的一部分吗?@Daniel它起作用了!但是我可以知道为什么我需要添加那个swith-lm吗?2如果这都是关于链接库的,那么当我用任何常量编号替换x时,为什么会执行它。?3为什么在链接其他库(如stdio.h)时不必添加此swith?gcc总是隐式地将源代码链接到标准C库。显然,您是用C语言编程的,所以您很可能会使用这个库,所以每次在命令行中添加一个额外的-lc会很奇怪。如果用常量替换“x”,编译器会知道pow函数的作用,将其转换为常量,并避免在运行时实际调用该函数。@Daniel-那么你的意思是math.h不像stdio.h那样是标准C库的一部分吗?