【发布时间】:2011-12-31 12:23:02
【问题描述】:
当我针对libphp5.so 等共享库运行ldd 时,我发现它依赖于libmysqlclient.so.16:
这些依赖文件名和路径 (/usr/lib/mysql/libmysqlclient.so.16) 是否已写入共享库二进制文件?还是这条路径是由其他方式确定的,例如通过/etc/ld.so.conf.d/mysql-i386.conf,顺便包含:
/usr/lib/mysql/
还有一件事让我感到困惑:
我有一个从源代码编译的共享库。这依赖于libmysqlclient_r。 gcc 编译器切换以生成这个库,如下所示:
当我ldd mylib.so 时,我看到了:
但是在/usr/lib/mysql 目录中我看到了:
libmysqlclient_r.so 是指向libmysqlclient_r.so.16.0.0 的符号链接,那么为什么ldd 将依赖关系显示为libmysqlclient_r.so.16。我在这里缺少什么魔法吗?
多年来我一直是 Windows 开发人员,我对gcc 和 Linux 上的开发有点陌生。
我的 Linux 发行版是 CentOS 6.0 x86-32bit。
【问题讨论】:
标签: linux gcc dependencies shared-libraries ldd