在安装时如果未指定安装目录,在安装过程中会将以下文件拷贝到 /usr/local/lib 目录下:
liblber.a
liblber.la
liblber.so
liblber-2.4.so.2
liblber-2.4.so.2.10.8
libldap.a
libldap.la
libldap.so
libldap-2.4.so.2
libldap-2.4.so.2.10.8
libldap_r.a
libldap_r.la
libldap_r.so
libldap_r-2.4.so.2
libldap_r-2.4.so.2.10.8
实际上安装脚本程序存在一个 Bug:由于本机安装的是 64 位操作系统,而通常 /usr/local/lib 目录下默认存放 32 位的库文件,64 位的库文件应该放到 /usr/local/lib64 目录下,建议用户将这些库文件移动到 /usr/local/lib64 目录下。
OpenLDAP最重要的动态库文件包括以下三个:liblber.so,libldap.so,libldap_r.so,对应的静态库文件是:liblber.a,libldap.a,libldap_r.a。但全部库文件不只有这些,假设 OpenLDAP 文件存放在目录 /myfiles/ldap/openldap-2.4.45 下,在该目录下有一个名为 libraries 的子目录,在该目录下包含的全部库文件及其存放位置如下图所示:
libraries /---- liblber / .libs/ (该目录下的库文件包括:liblber.a ,liblber.so)
|
| -- libldap_r / (该目录下的库文件包括:libldap_r.a ,libldap_r.so)
|
| -- liblunicode / (该目录下的库文件包括:liblunicode.a)
|
| -- libldap / .libs / (该目录下的库文件包括:libldap.a , libldap.so)
|
| -- librewrite / (该目录下的库文件包括:librewrite.a)
|
| -- liblutil / (该目录下的库文件包括:liblutil.a)
从上图可以看出,OpenLDAP 的库文件比较多,在编译与 OpenLDAP 相关的程序时,如果出现链接错误,报告找不到 OpenLDAP 中的函数时,要注意检查是否包含了必要的库文件路径、是否链接了必要的库文件,特别是像 liblutil.a 这种不常用到的库文件,在链接时很容易被忽视。但有时候就是因为只链接了常用的库文件,未链接其他不常见的库文件导致编译器报错。