如下一段简单代码:

114458161.png

编译运行结果如下:

114500603.png

修改代码如下:

114502695.png

同样的命令这次则无法通过编译:

114504936.png

添加 -lm ,也不行:

114506535.png

再次调整编译命令参数,则可以编译通过:

114508153.png

  调整编译参数可以通过链接,因为编译器先编译源码并产生“未定义的引用”,链接器链接时加库中含有未定义引用符号的文件,最终生成可执行文件。


如果去掉 -lm 但是调整了参数位置则无法通过编译:

114822419.png

Why?

参考:帮 C/C++ 程序员彻底了解链接器