您的位置:首页 > 运维架构

使用msys;mingw编译openldap

2007-01-09 11:58 405 查看
用msys和mingw编译完了bdb后(http://blog.csdn.net/zzw_happy/archive/2007/01/05/1475053.aspx)就可以编译openldap了。

注意: 编译bdb时一开始我有错误,请按照后来更正的方法编译,否则openldap无法使用。

先看看faq:

http://www.openldap.org/faq/data/cache/300.html

http://www.openldap.org/faq/data/cache/301.html

http://www.openldap.org/faq/data/cache/302.html

需要额外的正则表达式regex库,在unix系统这个库是自带的,在mingw32上没有,去ftp://ftp.gnu.org/gnu/regex下载,就一个c和一个h文件,编译后用ar做成静态库,拷贝h文件到mingw/include下,拷贝库到ming/lib下。

我用的openldap 2.3.24,解压后:

export CFLAGS="-g -I/c/cpp/lib-gcc/include -I/c/cpp/lib-gcc/include/bdb" LDFLAGS="-L/c/cpp/lib-gcc/lib -I/c/cpp/lib-gcc/include" CPPFLAGS="-g -I/c/cpp/lib-gcc/include/bdb"; ./configure --enable-hdb=no --enable-rewrite=no

路径需要设置好,可以设置需要的overlay参数。

configure后需要在rewrite和server目录下的makefile中需要将AC_LIBS = -lws2_32 改为AC_LIBS = -lws2_32 -lregex,即加入刚才编译的regex库。

然后make depend; make。OK

2007.1.11 编译sql-backend的方法

如果需要sql backend, 还的其它的一些修改:

修改configure:

line: 1414
cat >>confdefs.h <<_ACEOF
#ifdef MINGW
#include <windows.h>
#endif //zzw: mingw need this ?
#define PACKAGE_NAME "$PACKAGE_NAME"
_ACEOF

line: 6689
#ifndef MINGW
char SQLDriverConnect (); //zzw: mingw dont accept this ?
#else
#include <sqlext.h>
#endif
int
main ()
{
#ifndef MINGW
SQLDriverConnect ();
#else
SQLDriverConnect(0,0,0,0,0,0,0,0);
#endif

另外将所有的-lodbc改为-lodbc32,mingw带的是这个库。

在slapd目录的makefile 里 AC_LIB变量加上"-lRpcrt4"

config命令:

export CFLAGS="-DMINGW -g -I/c/cpp/lib-gcc/include -I/c/cpp/lib-gcc/include/bdb" LDFLAGS="-L/c/cpp/lib-gcc/lib -L/c/cpp/mingw/lib" CPPFLAGS="-g -I/c/cpp/lib-gcc/include/bdb"; ./configure --enable-hdb=no --enable-overlays --enable-sql --enable-meta --enable-ldap --enable-rewrite --enable-null --enable-shared=no

这样开启了所有的overlay,除了没有hdb库(bdb比它要好,可以不要),几乎所有功能都有了,产生的为静态库。全部静态编译。

说明:

sql的backend我用不到,只是突然想试试看可不可以编译sql,由于做了一些修改,不知道编出来的东西能不能支持sql,有兴趣的朋友可以帮忙测试一下, 不管成功与否,给点feedback, 谢谢了先
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: