linux-gcc 编译时头文件和库文件搜索路径

一、头文件
  
gcc 在编译时寻找所需要的头文件 :
  
※搜寻会从-I开始
  
※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
  
※再找内定目录
/usr/include

/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include/g++-3
/usr/lib/gcc-lib/i386-linux/2.95.2/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
  
二、库文件
编译的时候:
※gcc会去找-L
※再找gcc的环境变量LIBRARY_PATH
  
※再找内定目录 /lib:/usr/lib: /usr/local/lib:这是当初compile gcc时写在程序内的

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

1、在配置文件/etc/ld.so.conf中指定动态库搜索路径

2、通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)
  
3、在编译目标代码时指定该程序的动态库搜索路径(还可以在编译目标代码时指定程序的动态库搜索路径。
  
这是通过gcc 的参数"-Wl,-rpath,"指定。当指定多个动态库搜索路径时,路径之间用冒号":"分隔
4、默认的动态库搜索路径/lib    /usr/lib
可以通过执行可执行文件pos得到的结果不同获知其搜索到了哪个动态库,从而获得第1个动态库搜索顺序,然后删除该动态库,
  
再执行程序pos,获得第2个动态库搜索路径,再删除第2个被搜索到的动态库,
  
如此往复,将可得到Linux搜索动态库的先后顺序。
程序pos执行的输出结果和搜索到的动态库的对应关系如表1所示
  
程序pos输出结果 使用的动态库 对应的动态库搜索路径指定方式
./ ./libpos.so 编译目标代码时指定的动态库搜索路径
  
/root/test/env/lib /root/test/env/lib/libpos.so 环境变量LD_LIBRARY_PATH指定的动态库搜索路径
  
/root/test/conf/lib /root/test/conf/lib/libpos.so 配置文件/etc/ld.so.conf中指定的动态库搜索路径
  
/lib /lib/libpos.so 默认的动态库搜索路径/lib
  
/usr/lib /usr/lib/libpos.so 默认的动态库搜索路径/usr/lib
  
动态库的搜索路径搜索的先后顺序是:
  
1.编译目标代码时指定的动态库搜索路径;
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;

3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;
4.默认的动态库搜索路径/lib    /usr/lib。

zz from: http://www.cnblogs.com/zhengmeifu/archive/2010/03/02/linux-gcc_compile_header_file_and_lib_path.html

转载于:https://www.cnblogs.com/bouygues/archive/2011/10/20/4480002.html

linux-gcc 编译时头文件和库文件搜索路径相关推荐

  1. linux c 编译时 include 和 链接库 文件路径指定

    C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径.自己指定的路径就不说了,这里说明一下系统自动搜索的路径. [1 ...

  2. Linux编译时如何减小so库文件的大小

    Linux编译时如何减小so库文件的大小 今天问了我这个问题,我就顺便记录一下.客户问为什么libc.so文件再编译前和编译后的size不一样啊,staging 和 compile 两个dir下的 l ...

  3. Linux gcc编译过程及动态/静态库制作

    Linux库概念及如何制作静态库和动态库 1: gcc编译的过程 2: 分文件编程 3: 库(静态库和动态库) 3.1: 库的基本介绍 3.2: 静态和动态库的区别 3.3: 库的制作及使用 3.3. ...

  4. python编译:setup.py添加.h头文件或者库的搜索路径

    通过源码安装python第三方库时,经常会出现该库依赖的c/c++头文件.库找不到的情况,特别是自己编译安装的c/c++库时.比如leveldb,mysql等等. 我编译图形学的一个库就出现了问题. ...

  5. Linux下gcc编译中关于头文件与库文件搜索路径相关问题

    如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:) 原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631 ========== ...

  6. linux下mkdir头文件_整理Linux下gcc编译中关于头文件与库文件搜索路径相关问题

    态库./libpos.so. /root/test/env/lib/libpos.so和/root/test/conf/lib/libpos.so.我们再用源程序 pos_lib.c(见程序5)来创建 ...

  7. gcc编译链接头文件和库文件

    GCC与头文件 gcc -参数: -I ( i 的大写) :指定头文件路径(相对路径或绝对路径,建议相对路径) -i :指定头文件名字 (一般不使用,而是直接放在**.c 文件中通过#include& ...

  8. Linux找头文件规则,linux 头文件、库文件查找顺序

    linux 头文件.库文件查找顺序 默认分类 2009-11-14 01:24:28 阅读126 评论0 字号:大中小 linux 头文件.库文件查找顺序 2009-11-03 12:36 Inclu ...

  9. linux+C环境下动态管理头文件和库文件

    本文共分三个部分:首先给出了一个简单的Makefile的例子,然后分别详细阐述了头文件和库文件的相关知识 1.一个Makefile的例: -L是指定链接时搜索路径,比如-L./等: -l是指定具体的库 ...

最新文章

  1. iOS数据库操作之FMDB
  2. 写出python中的六种数据类型_python 数据类型1
  3. win10 ObservableCollection 排序自动收缩问题
  4. 自动化运维之部署Puppet
  5. python网页动图_python,tensorflow线性回归Django网页显示Gif动态图
  6. Weird Flecks, But OK
  7. 安装python遇到错误_安装Python时遇到如下问题,解决方案
  8. hadoop面试题答案
  9. 返回路径平面上的间隙_返回电流及其与通孔的关系
  10. SpringMVC-视图和视图解析器
  11. 《经济学人》15个栏目版块介绍,快速了解杂志!
  12. js获取当前卫星云图url并播放
  13. 空间索引 - Redis/MongoDB/PostgreSQL/MySQL空间索引使用报告
  14. Linux操作系统安全防护指导手册(详细截图)
  15. c++使用POP协议接收以及解析邮件
  16. 峯云5G:纵论AI赋能 聚焦企业联络与协同
  17. 使用Python自动化管理Exchange邮箱
  18. 【论文笔记】EagerMOT:3D Multi-Object Tracking via Sensor Fusion
  19. 认识数据驱动,数据驱动是怎么使用的
  20. 什么高大填空四个字动人_什么发亮填空四字词语

热门文章

  1. Span中显示内容过长显示省略号---SpringCloud Alibaba_若依微服务框架改造_前端基于Vue的ElementUI---工作笔记011
  2. npm的常用操作---npm工作笔记003
  3. ES6新特性_Promise对象的catch方法---JavaScript_ECMAScript_ES6-ES11新特性工作笔记029
  4. JAVA常用API或编程工具001---ITEXT把html转换成pdf的jar包,使用Java将HTML转换为PDF
  5. DISCUZ学习笔记01---discuz集成环境的搭建
  6. android学习笔记---52_发送状态栏通知
  7. 如何杀掉服务器的进程
  8. 英文操作系统(chcp:437)让Console输出UTF-8
  9. BCD与ASCII码互转-C语言实现
  10. 随想录(使用堆栈回溯函数调试代码)