99网
您的当前位置:首页在windows下编译openldap的方法

在windows下编译openldap的方法

来源:99网


在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

因篇幅问题不能全部显示,请点此查看更多更全内容