我试图在Windows上构建OpenLDAP。我很难这么做。
我开始按照概述的方向操作,但很快意识到它已经过时了。
然后我找到了here,意识到这也不太对。
我终于找到了this,并体验了这个家伙所经历的错误。然而,当我尝试他的工作(在portable.h中注释第1116行)时,我遇到了更多的问题。
有没有建立这个库的规范来源?
我用的是:
Windows 7专业版。
Msys2(x86_64 20160205,来自this
OpenSSL(1.0.1r版,来自here
rxspencer(α3.8.g7来自here
OpenLDAP(2.4.44版,来自here
步骤0:
编译rxspencer

./configure
make
make check
make install

步骤1:
使用Visual Studio 2010 x64命令提示符编译OpenSSL
perl Configure no-ssl2 VC-WIN64A --prefix=d:\temp\openssl\x64
./ms/do_win64a.bat

nmake -f ms\nt.mak
nmake -f ms\ntdll.mak
cd out32
..\ms\test

步骤2:
修改路径以便configure能够看到rxspencer
PATH=$PATH:/usr/local/lib

步骤3:
env \
CFLAGS="-I/usr/local/include/rxspencer" \
LD_LIBRARY_PATH="/c/work/openssl/lib:/usr/local/lib" \
LDFLAGS="-L/c/work/openssl/lib -L/usr/local/lib" \
CPPFLAGS="-I/c/work/openssl/include" \
LIBS="-lssl -lrxspencer" \
./configure \
--enable-shared \
--enable-static \
--with-tls \
--disable-bdb \
--disable-hdb \
2>&1 | tee output_config.log

这很管用。杰出的!
步骤4:
make depend 2>&1 | tee output_makedepend.log

这很管用。杰出的!
步骤5:
从include/portable.h注释掉第1116行
步骤6:
make 2>&1 | tee output_make.log

看一堆看起来像这样的错误:
In file included from init.c:25:0:
back-mdb.h:71:2: error: unknown type name 'uint32_t'
  uint32_t mi_dbenv_flags;
  ^
back-mdb.h:84:2: error: unknown type name 'uint32_t'
  uint32_t mi_rtxn_size;
  ^
back-mdb.h:86:2: error: unknown type name 'uint32_t'
  uint32_t mi_txn_cp_min;
  ^
back-mdb.h:87:2: error: unknown type name 'uint32_t'
  uint32_t mi_txn_cp_kbyte;
  ^
init.c: In function 'mdb_db_open':
init.c:88:2: error: unknown type name 'uint32_t'
  uint32_t flags;

添加:
#ifdef HAVE_STDINT_H
#include <stdint.h>
#endif

到顶端
servers/slapd/back-mdb/back-mdb.h

再做一次。。。
现在我有一堆错误,看起来像这样:
symdummy.c:1:5: error: expected identifier or '(' before string constant
 int ".refptr.ad_index_mutex"();
     ^
symdummy.c:2:5: error: expected identifier or '(' before string constant
 int ".refptr.ad_undef_mutex"();
     ^
symdummy.c:3:5: error: expected identifier or '(' before string constant
 int ".refptr.at_oc_cache"();
 ^

指向服务器/slapd.def出错的地方?
我在这里做错什么了?我做错了什么,而这个版本在Windows上根本不起作用吗?

最佳答案

太晚了。
我最近成功了
Windows 7旗舰版x64。
Msys2 x86_6420160205号
OpenLDAP 2.4.46我和你一样禁用了hdb和bdb。我启用了共享库,但不确定它们是否已编译。
我注意到这可能不是你想要的全部清单,只是想分享。
多亏了你的帮助,我才克服了便携的h和init.c问题。
然后我的make dependmake成功了。我用它做了一些简单的测试,slapd正在为我工作,能够ldapsearch,ldapadd并从ldapAdmin连接到它。
在make depend期间,我确实看到了ntúerr.c问题,必须手动将其从openldap-2.4.46/libraries/liblber/nt戋err.c复制到/openldap-2.4.46/servers/slapd/slapi以跳过该警告。但是我不能解决netdb.h头丢失的问题,它仍然有效。

关于c - 如何使用Msys2和MinGW在Windows上构建OpenLDAP库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36435795/

10-13 08:21