在 GCC 中使用 math.h

最近在学习算法设计课程,需要写一些 c 程序。算法作业免不了要用到 math.h 库:

#include <math.h>

但是在 Linux GCC 环境下一编译就会出现类似如下的错误:

make all
Building target: SAT
Invoking: GCC C Linker
gcc  -o"SAT"  ./src/SAT.o   
./src/SAT.o: In function `main':
/home/mutoo/workspace/c/SAT/Debug/../src/SAT.c:38: undefined reference to `pow'

原来是因为 math库被放在了动态链接库中,如果程序中需要用到它,在链接时需要加上 -lm 命令:

$ gcc filename.c -lm -o  filename

其中 -l<library> 是对<library>库的引用;而 m 就是 math库。

另外,对于 Eclipse  CDT 的用户,可以进行如下配置

  • 选择菜单:Project > Properties…
  • 在对话框左边找到:C/C++ Build > Settings
  • 在对话框右边找到:Tool Settings > GCC Linker > Libraries
  • 单击 Libraries(-l) 边上的 [+] 号,增加一项
m

接下来就可以正常使用 math 库了。