`
washlife
  • 浏览: 3633 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

动态链接ld.so.conf

 
阅读更多
这个文件记录了编译时使用的动态链接库的路径。
默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件
如果你安装了某些库,比如在安装gtk+-2.4.13时它会需要glib-2.0 >= 2.4.0,辛苦的安装好glib后
没有指定 --prefix=/usr 这样glib库就装到了/usr/local下,而又没有在/etc/ld.so.conf中添加/usr/local/lib


=================
库文件的路径如 /usr/lib 或 /usr/local/lib 应该在 /etc/ld.so.conf 文件中,这样 ldd 才能找到这个库。在检查了这一点后,要以 root 的身份运行 /sbin/ldconfig 。



将/usr/local/lib加入到/etc/ld.so.conf中,这样安装gtk时就会去搜索/usr/local/lib,同样可以找到需要的库
将/usr/local/lib加入到/etc/ld.so.conf也是必须的,这样以后安装东东到local下,就不会出现这样的问题了。



ldconfig是个什么东东吧 :

它是一个程序,通常它位于/sbin下,是root用户使用的东东。具体作用及用法可以man ldconfig查到
简单的说,它的作用就是将/etc/ld.so.conf列出的路径下的库文件 缓存到/etc/ld.so.cache 以供使用
因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf增加新的库路径后,需要运行一下/sbin/ldconfig
使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件明明就在/usr/lib下的,也是不会被使用的,结果
编译过程中抱错,缺少xxx库,去查看发现明明就在那放着,搞的想大骂computer蠢猪一个。


引用:http://www.cnblogs.com/wqj1212/archive/2009/07/08/1519385.html

附加:
----------------------------------------------------------
Linux 运行的时候,是如何管理共享库(*.so)的?在 Linux 下面,共享库的寻找和加载是由 /lib/ld.so 实现的。 ld.so 在标准路经(/lib, /usr/lib) 中寻找应用程序用到的共享库。

但是,如果需要用到的共享库在非标准路经,ld.so 怎么找到它呢?

目前,Linux 通用的做法是将非标准路经加入 /etc/ld.so.conf,然后运行 ldconfig 生成 /etc/ld.so.cache。 ld.so 加载共享库的时候,会从 ld.so.cache 查找。

传统上,Linux 的先辈 Unix 还有一个环境变量:LD_LIBRARY_PATH 来处理非标准路经的共享库。ld.so 加载共享库的时候,也会查找这个变量所设置的路经。
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./lib
export LD_LIBRARY_PATH
但是,有不少声音主张要避免使用 LD_LIBRARY_PATH 变量,尤其是作为全局变量。这些声音是:
* LD_LIBRARY_PATH is not the answer - http://prefetch.net/articles/linkers.badldlibrary.html
* Why LD_LIBRARY_PATH is bad - http://xahlee.org/UnixResource_dir/_/ldpath.html
* LD_LIBRARY_PATH - just say no - http://blogs.sun.com/rie/date/20040710
分享到:
评论

相关推荐

    \Linux下库的设置:ld.so.conf_文件与PKG_CONFIG_PATH变量

    ld.so.conf 文件用于指定共享库的搜索路径,以便动态链接器可以正确地加载共享库。通常情况下,ld.so.conf 文件位于 /etc 目录下,内容如下所示: /usr/lib /opt/gtk/lib 这个文件指定了共享库的搜索路径为 /usr/...

    libgd相关资源文件

     2、加入动态库文件所在的目录:执行vi /etc/ld.so.conf,在"include ld.so.conf.d/*.conf"下方增加"/usr/local/lib"。  3、保存后,在命令行终端执行:/sbin/ldconfig -v;其作用是将文件/etc/ld.so.conf列出的...

    linux创建和使用动态链接库.so文件

    1. **修改 `/etc/ld.so.conf` 文件**:在该文件中添加动态链接库所在的目录路径,然后执行 `ldconfig` 命令更新链接器缓存。 2. **设置环境变量 `LD_LIBRARY_PATH`**:这是一个更灵活的方法,可以在不修改系统配置...

    Linux动态链接库.so文件的创建与使用

    解决方法包括检查`LD_LIBRARY_PATH`,确保库文件的路径正确,或者在系统配置文件`/etc/ld.so.conf`中添加库路径。 在调试过程中,`ldd`命令非常有用,它可以显示程序依赖哪些动态链接库,以及它们是否成功加载。若...

    cuda报错 OSError: libcudart.so.10.0: cannot open shared object file: No such file

    有时候会碰到cuda报错,OSError: libcudart.so.10.0: cannot open shared object ...ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态

    安装linux的so库

    3. **备份/etc/ld.so.conf文件**:在修改前备份`/etc/ld.so.conf`文件,以便出现问题时能够迅速恢复。 通过上述方法,我们可以有效地解决Linux环境下因缺失libz.so.1等.so文件而导致的问题,并确保系统的稳定运行。

    libtinfo.so.5(64位)

    `/etc/ld.so.conf`文件和`ld.so.conf.d/`目录下的文件用于指定动态链接器查找库的路径,确保这些配置正确。 4. **编译时问题**:如果MySQL是从源代码编译安装的,而编译时没有正确指定或链接到`libtinfo.so.5`,也...

    libstdc++.so.6.0.29的动态库

    为了确保GCC 11.0.2能正确运行,我们需要将libstdc++.so.6.0.29复制到适当的位置,并更新系统的动态链接器配置文件——/etc/ld.so.conf,然后使用ldconfig命令来刷新链接器缓存,使系统能够找到这个库。 在某些情况...

    libstdc++.so.6: 无法打开共享对象文件: 没有那个文件或目录

    - 检查`/etc/ld.so.conf`文件,确保包含了`libstdc++.so.6`所在的目录。如果没有,请添加相应的行。 - 执行`ldconfig`命令更新缓存,使系统能够识别到新的库文件路径。命令如下:`sudo ldconfig`。 - 可以使用`...

    libXau.so.6.0.0

    在Linux中,动态链接库的路径由LD_LIBRARY_PATH环境变量或/etc/ld.so.conf文件指定。 3. **libXau**: "Xau"通常指的是X11的认证协议,用于处理X服务器和客户端之间的安全验证。libXau库包含了实现这些协议的函数,...

    安装Apache提示缺少 libapr-1.so.0与libaprutil-1完美解决

    如果问题仍未解决,可能需要检查系统的动态链接器配置文件`/etc/ld.so.conf`,确保包含了APR和APR-UTIL库的路径,并执行`ldconfig`命令以更新动态链接器缓存。 通过以上步骤,可以有效地解决因缺少`libapr-1.so.0`...

    linux动态链接的基本知识

    动态链接器(ld-linux.so.2)是Linux系统中用于处理动态链接的核心组件。当一个程序需要访问共享库中的函数或数据时,动态链接器会自动地将这些共享库加载到内存中,并将程序引用的符号与实际的地址进行绑定。这个...

    libmysqlclient.so.zip

    可以编辑`/etc/ld.so.conf`文件,添加包含库文件的目录,然后运行“sudo ldconfig”更新缓存。 3. **编译时链接**:如果是在编译应用程序时遇到问题,确保在编译选项中指定正确的库路径和链接器标志,例如:“-L/...

    为什么ldconfig后,会自动生成so的软链接 ldconfig就会生成librudp.so软连接

    `ldconfig`还会根据`/etc/ld.so.conf`及其包含的配置文件,扫描指定目录下的库文件,并创建或更新相应的软链接。 在`so`文件中,有一个称为`SONAME`的特殊字段,它记录了该库的正式名称。`SONAME`通常是库文件的...

    libmysqlclient.so.16

    2. **调整库路径**:将库文件所在路径添加到LD_LIBRARY_PATH,或者修改/etc/ld.so.conf并重新运行ldconfig。 3. **匹配版本**:确保系统中的库版本与应用要求一致,或找到兼容的旧版本库。 4. **修复软链接**:检查...

    linux下动态链接库的使用方法

    ldconfig命令用来在默认目录和ld.so.conf配置的目录下搜索共享库,并创建或更新动态链接程序ld.so所需的动态链接缓存文件/etc/ld.so.cache。这个文件保存了所有共享库的名字列表,用于加速链接库的加载。当安装了新...

    Linux程序运行时加载动态库失败的解决方法

    Linux下不能加载动态库问题 当出现下边异常情况 ./test: error while loading shared libraries: libmfs_open.so: cannot open shared object file: ...include ld.so.conf.d/*.conf /usr/cluster/.share/lib 方法二、

    Jmeter ServerAgent Arm架构 libsigar-aarch64-linux.so

    然后,将`libsigar-aarch64-linux.so`复制到ServerAgent的运行目录,或者将其路径添加到系统的动态库搜索路径中(通常通过修改`/etc/ld.so.conf`并执行`ldconfig`命令来完成)。接着,启动或重启ServerAgent,它就能...

    安装oracle需要进行配置

    进入 `/etc/ld.so.conf.d/` 目录,创建名为 `xorg-x11-deprecated-libs.conf` 的文件,并在其中添加一行 `/usr/X11R6/lib`。然后,使用 `ldconfig` 命令更新库的缓存: ```bash echo "/usr/X11R6/lib" > /etc/ld.so....

    增加自己的so库的办法,默认情况下,编译器只会使用lib和usrlib这两个目录下的库文件

    - 如果不希望直接编辑`ld.so.conf`,Linux系统还提供了一个名为`/etc/ld.so.conf.d/`的目录,其中可以放置多个以`.conf`为扩展名的小文件,每文件中包含一个库路径,这样可以保持配置的整洁。 2. **运行`ldconfig`...

Global site tag (gtag.js) - Google Analytics