今天才编译代码时碰到了一个很有意思的问题:
 
#gcc test.c
/tmp/ccF38Vgg.o: In function `main':
03.c:(.text+0x49): undefined reference to `sqrt'
03.c:(.text+0x7d): undefined reference to `sqrt'
 
之后我在编译的命令后面加了一个参数 -lm
 
#gcc test.c -lm
 
这样编译就没有上面的提示了。
-l参数就是用来指定程序要链接的库.
-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了