对于以压缩包发布的软件,在它的目录下通常都有一个配置脚本configure,它的作用确定编译参数(比如头文件位置、连接库位置等),然后生成Makefile以编译程序。可以进入该软件的目录,执行"./configure --help"命令查看使用帮。

一个程序能正确编译、链接、运行需要满足3个条件:预处理时能找到头文件,连接时能找到库(静态库或动态库),运行时能找到库。下面介绍库文件的搜索路径 :

编译的时候:

gcc最先搜索-L参数指定的路径--->gcc的环境变量LIBRARY_PATH设置的路径--->内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的

1.“-L”指定连接时库的搜索路径,这些库使用"-l"来显示指定,比如"-labc"表示的库文件为libabc.so

2."-rpath-link"比"-L"多一项功能,它指定的目录还可以用于搜索依赖库。

3."-rpath"比"-rpath-link"多一项功能,它指定的目录会被编译进程序中,当程序运行时,首先从这些目录中寻找库。

怎样指定"-rpath-link"呢?连接器arm-linux-ld通常是由arm-linux-gcc间接启动的,而arm-linux-gcc并不认识"-rpath-link"选项,所以需要在前面加上关键字"-Wl",表示选项用于连接器。在执行配置命令configure之前设置LDFLAGS即可,比如:

export LDFLAGS="-Wl,-rpath-link-Wl,/work/crossbuild/X/lib -Wl,-rpath-link-Wl,/work/corssbuild/GTK/lib"

./configure

运行的时候(搜索动态链接库):

路径一:编译时使用"-rpath"指定目录。

路径二:在配置文件/etc/ld.so.conf中指定动态库搜索路径 
路径三:通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)
路径四:在编译目标代码时指定该程序的动态库搜索路径(编译时,通过gcc 的参数"-Wl,-rpath,"当指定多个动态库搜索路径时,路径之间用冒号":"分隔)
路径五:默认的动态库搜索路径

转载于:https://www.cnblogs.com/linuxbo/p/4301750.html

Linux下的库文件搜索路径相关推荐

  1. linux的库文件路径,Linux下的库文件搜索路径

    对于以压缩包发布的软件,在它的目录下通常都有一个配置脚本configure,它的作用确定编译参数(比如头文件位置.连接库位置等),然后生成Makefile以编译程序.可以进入该软件的目录,执行&quo ...

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

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

  3. 库文件搜索路径及GCC搜索路径总结

    1. -L指定搜索的路径,   -l指定库名 如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:) 原地址: http://blog.chinaunix.net/u/28781/showart. ...

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

    linux-gcc 编译时头文件和库文件搜索路径 一.头文件    gcc 在编译时寻找所需要的头文件 :    ※搜寻会从-I开始    ※然后找gcc的环境变量 C_INCLUDE_PATH,CP ...

  5. linux vim配置头文件搜索路径

    linux vim配置头文件搜索路径 根目录下 修改 etc/profile 文件结尾处加 set path=.,/usr/include,,/usr/include/c++/** //**搜索子目录 ...

  6. linux 查看libevent 安装目录,linux下libevent安装配置与简介 以及 linux库文件搜索路径的配置...

    libevent简介 libevent是基于Reactor模式的I/O框架库,它具有良好的跨平台性和线程安全,它实现了统一事件源(即对I/O事件.信号和定时事件提供统一的处理).高性能分布式内存对象缓 ...

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

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

  8. linux头文件 库,Linux操作系统的头文件和库文件搜索路径

    一. 头文件 1 ""中的头文件,在源文件当前目录查找 2 -I 中指定目录 -I可以在CFLAG中指定 3 gcc的环境变量 C_INCLUDE_PATH, CPLUS_INCL ...

  9. [转]Linux C语言头文件搜索路径

    转自:http://hi.baidu.com/ilonng/blog/item/a0232435fbcfb90490ef390d.html/cmtid/68d4ab7bbb8026fb0ad187be ...

最新文章

  1. 微服务追踪系统,你绝对想不到!
  2. Kubernetes文章汇总
  3. [置顶] Android面试题目之四: 归并排序
  4. objective-c(反射)
  5. 栈和队列(python代码)
  6. 工作263:弹性布局 修改样式
  7. php 负载监控_php记录服务器负载、内存、cpu状态的代码
  8. xlwings删除数据_xlwings如何删除行和列?
  9. mysql完全手册阅读笔记
  10. POJ 1001 Exponentiation
  11. 谷歌紧急修复已遭在野利用的0day
  12. android.jar 位置,Android 导入jar包 so模块--导入放置的目录
  13. 一、二层交换机构建局域网
  14. GhostXP_SP3 PCOS技术快速装机版 5.7(优化细节 力争完美)
  15. 麻省理工学院计算机博士几年,破译「罗塞塔石碑」要几十年?华裔MIT博士开发新系统,快速解密...
  16. java8 lambda 处理分类和子分类的技巧
  17. java工程师视频教程,mysql数据库引擎面试
  18. 在戴尔游匣7559上安装win10和Ubuntu16.04双系统
  19. CDay09 联合和枚举
  20. 考PMP需要多少钱?

热门文章

  1. MFC让窗口最前端显示
  2. 如何输出源文件的标题和目前执行行的行数
  3. [react] React.createClass和extends Component的区别有哪些?
  4. React开发(229):react删除的实现
  5. [js] 使用ajax轮询接口有什么优缺点?
  6. 工作206:修改新增按钮显示逻辑
  7. 前端学习(2623):Vuex初步识别
  8. 工作86:防抖和节流的问题
  9. 前端学习(2038)vue之电商管理系统电商系统之优化nprogress加载进度条
  10. 前端学习(2012)vue之电商管理系统电商系统之手动为upload组件添加请求头