使用C 操作OpenLDAP

2021-04-09 06:50:11 字數 1164 閱讀 3746

一、api選擇

當使用c++操作openldap時,在編譯的過程中會關閉

ldap_deprecated 開關,導致所有deprecated的api都不能夠使用,報錯:

ldap_util.c:19: error: `ldap_init' undeclared (first use this function)

ldap_util.c:27: error: `ldap_perror' undeclared (first use this function)

ldap_util.c:32: error: `ldap_bind_s' undeclared (first use this function)

只要使用非deprecated的api就可以解決這個問題。

更通用的解決方法:在編譯的時候加上"-dldap_deprecated=1"

二、連線引數

連線引數應該為gcc -o filename filename.o -lldap -llber -stdc++

-lldap -llber:為openldap的庫檔案。

-lstdc++:為linux下連線c++程式必須的庫檔案。

如不加報錯:

ldap_util.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'

ldap_util_test.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'

collect2: ld returned 1 exit status

三、檔案分割

建議將類的定義放到標頭檔案,類方法的實現放到原始檔中。

如果將類的所有**放到1.c檔案中,在2.c中include了1.c檔案。在編譯2.c之前不需要編譯1.c,在連線2.o的時候也不需要提供1.o,否則報錯:

/usr/lib/gcc/i386-redhat-linux/3.4.3/../../../crt1.o(.text+0x18): in function `_start':

undefined reference to `main'

如果將類的定義放到1.h,實現放到1.c中,在2.c中include了1.h檔案。在編譯2.c之前需要編譯1.c,在連線2.o的時候也需要提供1.o,否則也會報錯.

openldap 安裝 配置 使用

1 安裝 安裝yum install y openldap servers openldap clients openldap devel 2 複製配置檔案 複製配置檔案 cp usr share openldap servers db config.example var lib ldap db ...

備忘 使用OpenLDAP做apache使用者認證

參見 http www.linux.com feature 120050 測試環境 centos 5.1 已經安裝了apache2.2.3 mod authnz ldap.so和mod ldap.so均已安裝 mod authnz ldap.so和mod ldap.so均已載入 開始測試 建立一個測...

Debian下使用OpenLDAP 管理端

openldap真是管理有較多的伺服器環境的好工具!之後可以安裝phpldapadmin通過瀏覽器管理openldap。phpldapadmin支援的ldap產品包括openldap ms activedirectory novell edirectory和sun directory等,不過它對op...

openldap使用 docker安裝版

yum remove docker docker common docker selinux docker engine bin true yum config manager add repo yum repolist yum install docker ce y mkdir p etc doc...

系統整合 OpenLDAP使用AD密碼

關於openldap和ad帳號的整合,網上有大量的文件,絕大多數都不符合我們的需求,下面的方案是我經過調研 測試 修改 最終採用的。公司網路中有兩種帳號 openldap帳號和ad帳號,使用者需要記住兩套密碼 需要修改系統讓使用者只需要記住一套密碼。本方案主要解決使用便利性問題 使用者只需要記一個密...