怎么样使用mingw和msys在windows上编译bdb?
最近需要bdb,又没有vc,于是想用mingw和msys编译。使用db-4.4.20
1。进入build_unxi
../dist/configure后生成了makefile
在makefile中加入CPPFLAGS=-I$(builddir) -I$(srcdir) -w -s -O3 -DMINGW
2。make后有错误
修改os/os_flock.c,加入:
#ifdef MINGW //zzw: we have no full fcntl support in mingw
#undef HAVE_FCNTL
typedef struct flock {}; //dummy
#endif
去掉 flock 功能。
修改os_sleep.c,在末尾:
#ifdef MINGW //zzw: use windows sleep for select
Sleep( t.tv_sec*1000 + t.tv_usec);
#else
if (select(0, NULL, NULL, NULL, &t) == -1)
if ((ret = __os_get_errno()) != EINTR)
__db_err(dbenv, "select: %s", strerror(ret));
#endif
修改db_hotbackup.c:
#ifdef MINGW //zzw:
if (wfd != -1 && (_commit(wfd) != 0 || close(wfd) != 0)) {
#else
if (wfd != -1 && (fsync(wfd) != 0 || close(wfd) != 0)) {
#endif
2007.1.9重大失误!!
今天发现只要config时指定:../dist/configure --enable-mingw --enable-test=no --enable-static=no --enable-rpc=no --enable-o_direct=no --enable-pthread_self=no --enable-cxx=no --enable-java=no就可以了。不需要修改源文件,注意--enable-mingw,原来一直没有注意configure --help信息,编译的时候会出现建立连接ln失败,不用理会,继续make就行了。
本文地址:http://www.45fan.com/dnjc/71591.html