C语言头文件、库文件的查找路径

Include的header文件,连结数据库,系统定义,总共有下列来源指定gcc去那找。

  • 当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib()
  • 写在specs内的
  • 后来用-D -I -L指定的
  • gcc环境变量设定(编译的时候)
  • ld.so的环境变量(这是run time的时候)

 

一、头文件

  gcc 在编译时如何去寻找所需要的头文件 :

  1. 所以header file的搜寻会从-I开始
  2. 然后找gcc的环境变C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
  3. 再找内定目录
/usr/include
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/http://www.cnblogs.com/http://www.cnblogs.com/include/g++-3
/usr/lib/gcc-lib/i386-linux/2.95.2/http://www.cnblogs.com/http://www.cnblogs.com/i386-linux/include

如果装gcc的时候,是有给定的prefix的话,那么就是

/usr/include
prefix/include
prefix/xxx-xxx-xxx-gnulibc/include
prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include

 

二、库文件

cos()等函式库的选项要多加 -lm 编译的时候:

  1. gcc会去找-L
  2. 再找gcc的环境变量LIBRARY_PATH
  3. 再找内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的

 

三、运行时动态库的搜索路径

  1. 编译目标代码时指定的动态库搜索路径;
  2. 环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
  3. 配置文件/etc/ld.so.conf中指定的动态库搜索路径;
  4. 默认的动态库搜索路径/lib;
  5. 默认的动态库搜索路径/usr/lib。


参考资料:

http://tech.ccidnet.com/art/302/20080219/1365287_1.html

http://www.2cto.com/kf/201011/78886.html

posted @ 2011-12-05 16:19  残夜  阅读(1473)  评论(0编辑  收藏  举报