那要如何编译这支程序呢?我们先直接编译看看:
[mw_shl_code=applescript,false][root@www ~]# gcc sin.c
sin.c: In function 'main':
sin.c:5: warning: incompatible implicit declaration of built-in function 'sin'
/tmp/ccsfvijY.o: In function `main':
sin.c:(.text+0x1b): undefined reference to `sin'
collect2: ld returned 1 exit status
# 注意看到上面最后一行,会有个错误信息,代表没有成功![/mw_shl_code]
特别注意上面的错误信息,唉啊!怎么没有编译成功?它说的是『undefined reference to sin』,说的是『没有 sin 的相关定义参考值!』,为什么会这样呢?这是因为 C 语言里面的 sin 函示是写在 libm.so 这个函式库中,而我们并没有在原始码里面将这个函式库功能加进去, 所以当然就需要在编译与连结的时候将这个函式库给他连结进运行档里面啊!我们可以这样做: (1)编译时加入额外函式库连结的方式:
[mw_shl_code=applescript,false]
[root@www ~]# gcc sin.c -lm -L/lib -L/usr/lib <==重点在 -lm
[root@www ~]# ./a.out <==尝试运行新文件!
1.000000[/mw_shl_code]
特别注意,使用 gcc 编译时所加入的那个 -lm 是有意义的,他可以拆开成两部份来看: