即使使用math.h和库链接-lm,也是“未定义的对pow的引用”

我正在使用math.h-lm选项来编译。 我已经尝试了所有的:

 gcc -o ssf ssf_tb.c ssf.c -lm gcc -o ssf ssf_tb.c -lm ssf.c gcc -o -lm ssf -lm ssf_tb.c ssf.c 

但是错误:

 undefined reference to 'pow' 

发生在所有情况下。

Solutions Collecting From Web of "即使使用math.h和库链接-lm,也是“未定义的对pow的引用”"

-lm放在行尾。

gcc按照它们在命令行中出现的顺序处理指定输入到最终程序的参数。 将-lm参数传递给链接器,例如,编译ssf.c参数,并将生成的目标文件传递给链接器。

链接器也按顺序处理输入。 当它看到一个库时,如-lm指定,它会查看该库是否提供链接器当前需要的任何符号。 如果是这样,它将复制这些模块与库中的符号,并将它们构建到程序中。 当链接器看到一个对象模块时,它将该对象模块构建到程序中。 将一个对象模块带入程序之后,链接器不会返回,看看它是否需要早期库中的任何东西。

由于您首先列出了库,链接器没有看到库中需要的任何内容。 如果首先列出目标模块,链接器将把目标模块放入程序中。 在这样做的过程中,链接器将列出对象所需的所有未定义符号。 然后,当链接器看到这个库时,它会看到这个库为这些符号提供了定义,并且会将带有这些符号的模块带入程序中。