linux下默认的函数库和头文件路径

来源:互联网 发布:超级舰队老僧扫矿软件 编辑:程序博客网 时间:2024/04/30 01:03
  • 编译时加入额外函式库连结的方式:
[root@www ~]# gcc sin.c -lm -L/lib -L/usr/lib  <==重点在 -lm [root@www ~]# ./a.out                          <==尝试运行新文件!1.000000

特别注意,使用 gcc 编译时所加入的那个 -lm 是有意义的,他可以拆开成两部份来看:

  • -l :是『加入某个函式库(library)』的意思,
  •  m :则是 libm.so 这个函式库,其中, lib 与扩展名(.a 或 .so)不需要写

所以 -lm 表示使用 libm.so (或 libm.a) 这个函式库的意思~至於那个 -L 后面接的路径呢?这表示:『我要的函式库 libm.so 请到 /lib 或 /usr/lib 里面搜寻!』

上面的说明很清楚了吧!不过,要注意的是,由於 Linux 默认是将函式库放置在 /lib 与 /usr/lib 当中,所以你没有写 -L/lib 与 -L/usr/lib 也没有关系的!不过,万一哪天你使用的函式库并非放置在这两个目录下,那么-L/path 就很重要了!否则会找不到函式库喔!

除了连结的函式库之外,你或许已经发现一个奇怪的地方,那就是在我们的sin.c 当中第一行『 #include<stdio.h>』,这行说的是要将一些定义数据由 stdio.h 这个文件读入,这包括 printf 的相关配置。这个文件其实是放置在 /usr/include/stdio.h的!那么万一这个文件并非放置在这里呢?那么我们就可以使用底下的方式来定义出要读取的include 文件放置的目录:

[root@www ~]# gcc sin.c -lm -I/usr/include

-I/path 后面接的路径( Path )就是配置要去搜寻相关的include 文件的目录啦!不过,同样的,默认值是放置在 /usr/include 底下,除非你的include 文件放置在其他路径,否则也可以略过这个项目!


0 0
原创粉丝点击