歡迎您光臨本站 註冊首頁

在windows下編譯openldap的方法

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

在windows下編譯openldap的方法

  在Windows下編譯openldap的方法:
 首先,至少需要有Berkeleydb和Cyrus SASL
 如果需要tls,還要有openssl
 openldap自從2.2x版以後就不在提供移植到windows下的工程文件了,但是它裡面還是有有這方免得考慮,移植起來還是可以實現的。經過兩三天的實驗,我已經把其中的幾個比較重要的庫編譯出來了,下面介紹下這個在windows下編譯openldap的過程。我的編譯環境是win xp, VC 6.0,另外我還用到了cygwin,其實並不重要,只是為了要把那些在linux下產生的代碼拷貝過來。
 
 1、編譯liblber
 (1)建立靜態鏈接庫工程文件,取名為liblber
 (2)導入4個頭文件到openldap\include中:
         lber_types.h
         ldap_config.h
         ldap_features.h
         portable.h
 (2)導入librares\liblber中的文件,可以不用包括idtest.c, dtest.c和etest.c
 (3)關閉宏:
 TIME_WITH_SYS_TIME
 HAVE_SYS_TIME_H
 LDAP_SYSLOG
 HAVE_LONG_LONG
 HAVE_POLL_H
 HAVE_GETOPT_H
 HAVE_GETOPT
 HAVE_SYS_IOCTL_H
 HAVE_FCNTL
 HAVE_NONPOSIX_STRERROR_R
 HAVE_STRERROR_R
 HAVE_STRERROR
 打開宏:
 HAVE_WINSOCK2
 HAVE_WINSOCK2_H
 HAVE_WINSOCK_H
 HAVE_WINSOCK
 (4)把所有的long long 型定義都改成unsigned long型
 (5)編譯,生成liblber.lib
 
 2、編譯libldap
 (1)建立靜態鏈接庫工程libldap
 (2)導入libraries\libldap中文件,除了dntest.c ftest.c test.c這些測試工程
 (3)關閉宏:
 HAVE_SYS_PARAM_H
 HAVE_ARPA_NAMESER_H
 HAVE_SYS_FILE_H
 HAVE_RESOLV_H
 HAVE_RES_QUERY
 HAVE_TLS
 HAVE_POLL
 HAVE_TLS
 HAVE_SYSCONF
 HAVE_SYS_UIO_H
 LDAP_PF_LOCAL
 HAVE_DIRENT_H
 HAVE_HSTRERROR
 HAVE_GETDTABLESIZE
 HAVE_INET_ATON
 打開宏:
 #define socklen_t int
 在portable.h中加入下面兩行:
 #define strcasecmp        stricmp
 #define strncasecmp        strnicmp
 (4)編譯,生成libldap.lib
 
 3、編譯liblutil
 (1)建立靜態庫工程liblutil
 (2)導入libraries\liblutil中的文件,但不導入detach.c
 (3)關閉宏:
 HAVE_FLOCK
 HAVE_SIGACTION
 URANDOM_DEVICE
 在portable.h後面加上以下四行:
         #define PROV_RSA_FULL 1
         typedef unsigned long HCRYPTPROV;
         typedef unsigned long DWORD;
         typedef unsigned char BYTE;
 (4)編譯,生成liblutil.lib
 
 
 基本上如果要開發客戶端的話,把這三個庫編出來似乎就可以了,我試了試,一般的增、刪、改、查都可以了,注意開發客戶端時,除了要連接這幾個庫,還要有libsasl.lib和ws2_32.lib這些庫,可能還會有wsock32.lib吧,如果連接不過可以試試。。。



[火星人 ] 在windows下編譯openldap的方法已經有169次圍觀

http://coctec.com/docs/service/show-post-33561.html