今天写一个linux程序,程序里用了sqrt()函数,在声明里也有 #include <math.h> ,但gcc area.c后还是报错:undefined reference to `sqrt'
查阅资料后得知:在编译的时候需要在后面加上 -lm 即:gcc area.c -lm
原因是数学函数sqrt()位于libm.so库文件中(这些库文件通常位于/lib目录下),-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件中找。
-lm用于跟数学库函数的链接, 跟编译无关,undefined reference to `sqrt' 也表示编译通过而链接没有通过。