介绍一下 OpenLDAP 2.4.45 相关的头文件和库文件

来源:互联网 发布:开的淘宝店怎么找不到 编辑:程序博客网 时间:2024/05/16 18:50
    按照前一篇博文的介绍,在 64 位 CentOS 6.8 上编译安装 openldap-2.4.45 版。完成后,发现 OpenLDAP 在安装过程中会把一些重要的头文件,如 lber.h,ldap.h 等拷贝到 /usr/local/include 目录下。如果要查看全部头文件,在这台计算机上是将下载的 openldap-2.4.45.tgz 文件解压到了 /myfiles/ldap/openldap-2.4.45 目录下, 到该目录的 include 子目录下,可以找到全部的头文件。

    在安装时如果未指定安装目录,在安装过程中会将以下文件拷贝到 /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 这种不常用到的库文件,在链接时很容易被忽视。但有时候就是因为只链接了常用的库文件,未链接其他不常见的库文件导致编译器报错。


原创粉丝点击