21.2.3
呼½外部函式库:加入连½的函式库
刚刚我们都½只是在屏幕上面印出一些字眼而已,如果说要计算数学公式呢?例如我们想要计算出三
½函数里面的
sin (90
度½
)
。要注意的是,大多数的程序语言都是使用径度而不是一般我们在计算的
『½度』,
180
度½约等于
3.14
径度!嗯!那我们就来写一下这个程序吧!
[root@study ~]#
vim sin.c
#include <stdio.h>
#include <math.h>
int main(void)
{
float value;
value = sin ( 3.14 / 2 );
printf("%f
\
n",value);
}
上面这个文件的内容可以在底下取得!
.
http://linux.vbird.org/linux_basic/0520source/sin.c
那要如何编译这支程序呢?我们先直½编译看看:
[root@study ~]#
gcc sin.c
#
新的
GCC
会
主
动½
函
数
抓
½来给
你用,所以只要加上
include <math.h>
就好了!
新版的
GCC
会主动帮你½所需要的函式库抓½来编译,所以不会出现怪异的错误讯息!
事实上,
数学函式库使用的是
libm.so
这个函式库,你最好在编译的时候½这个函式库纳½去比½好~另外要
注意,
这个函式库放置的地方是系统默认会去找的
/lib, /lib64
,所以你无须使用底下的
-L
去加入
搜寻的目录!
而
libm.so
在编译的写法上,使用的是
-lm (lib
简写为
l
喔!
)
喔!因此就变成:
.
编译时加入额外函式库连½的方式:
[root@study ~]#
gcc sin.c
-
lm
-
L/lib
-
L/lib64
<==
重
点
在
-
lm
[root@study ~]#
./a.out
<==
尝试执
行新
文件
!
1.000000
特别注意,使用
gcc
编译时所加入的那个
-lm
是有意义的,他可以拆开成两部份来看:
.
-l
:是『加入某个函式库
(library)
』的意思,
.
m
:则是
libm.so
这个函式库,其中,
lib
与扩展名
(.a
或
.so)
不需要写
所以
-lm
表示使用
libm.so (
或
libm.a)
这个函式库的意思~至于那个
-L
后面½的路径呢?这表示:
『
我要的函式库
libm.so
请到
/lib
或
/lib64
里面搜寻
!』