ldd 可执行文件如何找到 /usr/lib64/libstdc++.so.6?

Posted

技术标签:

【中文标题】ldd 可执行文件如何找到 /usr/lib64/libstdc++.so.6?【英文标题】:How ldd executable finds /usr/lib64/libstdc++.so.6? 【发布时间】:2014-06-19 02:31:28 【问题描述】:

当我跑步时

ldd ./myprogram

它显示:

...
libstdc++.so.6 => /usr/lib64/stdc++.so.6
libm.so.6 => /lib64/libm.so.6
...

/usr/lib64 不在我的 LD_LIBRARY_PATH 中,它如何找到 /usr/lib64?当我链接“myprgrom”时,它正在链接来自 $HOME/mynewgcc/.../lib64 的库。

【问题讨论】:

/etc/ld.so.conf.d @Brian:感谢您的回复。我已经检查过了:cat ld.so.conf 显示“include ld.so.conf.d/*.conf”。该目录下的 'cat' *.conf 显示: /usr/lib64/atlas hwcap 1 nosegneg hwcap 1 nosegneg /usr/local/lib /usr/lib64/mysql /usr/lib64/R/lib /usr/lib64/xulrunner don '看不到 /usr/lib64 【参考方案1】:

ldconfig 程序为ld.so(由ldd 调用)或ld-linux.so 构建缓存。 /etc/ld.so.conf/etc/ld.so.conf.d 中的共享对象被添加到此缓存中。这些路径被缓存以允许更快的查找(而不是查看文件系统中的任意位置,如LD_LIBRARY_PATH)。 ldconfig 也有某些默认值,即 /lib/lib64/usr/lib/usr/lib64(“受信任”目录)被添加到配置文件中的目录中(除非 ldconfig -n已指定)。

【讨论】:

请看我上面对布赖恩的评论。我在这些 conf 文件中看不到 /usr/lib64。我缺少的任何东西 我刚刚添加了关于受信任目录的说明。

以上是关于ldd 可执行文件如何找到 /usr/lib64/libstdc++.so.6?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 linux 可执行文件中使用静态库

可执行程序找不到lib库地址的处理方法

动态链接库引起的yum故障

/usr/lib64/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback

/usr/lib64/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback

对一个命令使用不同的 PHP 版本 CLI 可执行文件