2

Windows で OpenLDAP を構築しようとしています。私はそうするのが非常に困難です。

ここで概説されている指示に従い始めましたが、すぐにそれが時代遅れであることに気付きました。

その後、これを見つけましたが、それも正しくないことに気付きました。

私はついにこれを見つけこの男が経験している正確なバグを経験しました. しかし、彼の回避策 (portable.h の 1116 行をコメントアウト) を試すと、さらに問題が発生しました。

このライブラリを構築するための正規のソースはありますか?

私は使用しています:

  • ウィンドウズ 7 プロフェッショナル。
  • Msys2 (ここから x86_64 20160205 )
  • OpenSSL (ここからバージョン 1.0.1r )
  • rxspencer (ここからアルファ 3.8.g7 )
  • OpenLDAP (ここからのバージョン 2.4.44 )

ステップ 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"();
 ^

servers/slapd.def で問題が発生していることを指摘していますか?

ここで何が間違っていますか?私は何か間違ったことをしているのですか? Windows ではビルドがまったく機能しませんか?

4

1 に答える 1