库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处于默认库搜索路径之外的库,需要将库的位置添加到 库的搜索路径之中。设置库文件的搜索路径有下列两种方式,可任选其一使用:

  在环境变量 LD_LIBRARY_PATH 中指明库的搜索路径。

  在 /etc/ld.so.conf 文件中添加库的搜索路径。

  将自己可能存放库文件的路径都加入到/etc/ld.so.conf中是明智的选择

  添加方法也极其简单,将库文件的绝对路径直接写进去就OK了,一行一个。例如:

  /usr/X11R6/lib

  /usr/local/lib

  /opt/lib

  需要注意的是:第二种搜索路径的设置方式对于程序连接时的库(包括共享库和静态库)的定位已经足够了,但是对于使用了共享库的程序的执行还是不 够的。这是因为为了加快程序执行时对共享库的定位速度,避免使用搜索路径查找共享库的低效率,所以是直接读取库列表文件 /etc/ld.so.cache 从中进行搜索的。/etc/ld.so.cache 是一个非文本的数据文件,不能直接编辑,它是根据 /etc/ld.so.conf 中设置的搜索路径由 /sbin/ldconfig 命令将这些搜索路径下的共享库文件集中在一起而生成的(ldconfig 命令要以 root 权限执行)。因此,为了保证程序执行时对库的定位,在 /etc/ld.so.conf 中进行了库搜索路径的设置之后,还必须要运行 /sbin/ldconfig 命令更新 /etc/ld.so.cache 文件之后才可以。ldconfig ,简单的说,它的作用就是将/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache 以供使用。因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf增加新的库路径后,需要运行一下 /sbin/ldconfig使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件明明就在/usr/lib下的,也是不会被使用 的,结果编译过程中抱错,缺少xxx库,去查看发现明明就在那放着,搞的想大骂computer蠢猪一个。

  在程序连接时,对于库文件(静态库和共享库)的搜索路径,除了上面的设置方式之外,还可以通过 -L 参数显式指定。因为用 -L 设置的路径将被优先搜索,所以在连接的时候通常都会以这种方式直接指定要连接的库的路径。

  前面已经说明过了,库搜索路径的设置有两种方式:在环境变量 LD_LIBRARY_PATH 中设置以及在 /etc/ld.so.conf 文件中设置。其中,第二种设置方式需要 root 权限,以改变 /etc/ld.so.conf 文件并执行 /sbin/ldconfig 命令。而且,当系统重新启动后,所有的基于 GTK2 的程序在运行时都将使用新安装的 GTK 库。不幸的是,由于 GTK 版本的改变,这有时会给应用程序带来兼容性的问题,造成某些程序运行不正常。为了避免出现上面的这些情况,在 GTK 及其依赖库的安装过程中对于库的搜索路径的设置将采用第一种方式进行。这种设置方式不需要 root 权限,设置也简单:

  $ export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH

  可以用下面的命令查看 LD_LIBRAY_PATH 的设置内容:

  $ echo $LD_LIBRARY_PATH

  至此,库的两种设置就完成了。

转载于:https://www.cnblogs.com/armlinux/archive/2010/06/17/2390964.html

Linux系统中如何添加自己的库文件路径相关推荐

  1. linux 系统中 /etc/passwd 和 /etc/shadow文件详解

    在linux操作系统中, /etc/passwd文件中的每个用户都有一个对应的记录行,记录着这个用户的一下基本属性.该文件对所有用户可读.   而/etc/shadow文件正如他的名字一样,他是pas ...

  2. Linux 系统中成功恢复已删除的文件

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 当用户意外地删除 ...

  3. linux bzip2压缩文件,在Linux系统中使用Bzip2/Bunzip2处理压缩文件的教程

    同 gzip 一样,Bzip2 也是一个压缩工具,与其他传统的工具相比,它可以将文件压缩到更小,但其缺点为:运行速度比 gzip 慢. 基本用法如下: a) 压缩文件 一般情况下,针对压缩而言,Bzi ...

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

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

  5. linux怎么进入student用户,linux系统中手动添加用户

    在Centos5.8操作系统中无法使用useradd命令创建用户时,手动创建用户的方法. 第一步:举例要创建的用户为student用vim编辑器编辑/etc/passwd文件,在最后一行添加 stud ...

  6. linux系统中不存在 基本文件类型,Linux系统中不存在以下哪个基本文件类型( )

    [判断题]员工在工作不满意时会采取何种行为,主要受外界环境的影响. [单选题] [单选题]管理的本质是 ______ . [判断题]执行给药原则中,首要的是严格执行查对制度 [单选题]已知两点 ,则过 ...

  7. linux中默认安装php,Linux系统中Apache PHP MySQL的默认安装路径

    一直都是用一键安装包,今天帮朋友弄一Linux主机,发现原来主机商是帮用光盘安装的,很多都不一样. apache: 如果采用RPM包安装,安装路径应在 /etc/httpd目录下 apache配置文件 ...

  8. linux环境没有bzip2,Linux系统中安装使用Bzip2来压缩文件的方法讲解

    安装 Bzip2命令如下: 复制代码 代码如下: make -f Makefile-libbz2_so && make && make install &&am ...

  9. linux bzip2压缩文件,Linux系统中安装使用Bzip2来压缩文件的方法讲解

    安装 Bzip2命令如下: 复制代码代码如下: make -f Makefile-libbz2_so && make && make install && ...

最新文章

  1. 汇编语言复习摘要四——第一个汇编程序
  2. Python学习入门基础教程(learning Python)--3.3.3 Python逻辑关系表达式
  3. 在此iphone上尚未受信任_苹果中国官网开启限购!每款iphone每人限购两部
  4. 那年大一在图书馆作死的大学高数笔记 | 导数和微分
  5. M2Crypto/__m2crypto.so: undefined symbol: SSLv3_method
  6. 获取数据后插入到jsp页面(自用,没内容)
  7. 中国物联网激荡 20 年
  8. MATLAB求函数零点与极值
  9. IB文学:如何评论现代诗歌?
  10. python 报错“xxx is not defined”
  11. 杂牌蓝牙在2003系统使用新驱动的破解方法!
  12. 回忆--上海滩奋斗的日子
  13. 如何解决数据库高并发?
  14. html使div内部元素水平排列_实现元素水平排列的六种方法
  15. 专项测试实战 | 如何测试 App 流畅度(基于 FPS 和丢帧率)
  16. FME在变更地类流向统计中的应用
  17. vijos1027-spfa关键路径-休息中的阿呆
  18. iOS开发支付 — 内购(IAP)
  19. [转]基于mysql数据库binlog的增量订阅消费中间件:Canal
  20. CHAPTER 9 Web服务与应用(一)

热门文章

  1. python做请求转发_RequestDispatcher实现请求转发
  2. python实现文本编辑器_Python-tkinter实现简单的文本编辑器
  3. vue Mutation 必须是同步函数 为什么_Vue 开发必须知道的 36 个技巧「近1W字」
  4. db2 创建样本数据库_db2创建数据库
  5. psychopy 音频时长代码_PsychoPy入门_03_视频和音频的呈现
  6. for ie无效 in js_关于js中for in的缺陷浅析
  7. visual studio可以开发python吗_Visual Studio上开发Python六大功能
  8. java mp3数组_Java基础之数组(一)
  9. 基于PYNQ-Z2重建BNN工程
  10. linux串口中断_5年匠心之作,深度探索Linux虚拟化