19
回答
cygwin编译mongodb的c连接接口出现了错误
华为云4核8G,高性能云服务器,免费试用   
*** missing separator.  Stop. 应该是libmongoc.a缺什么库或者其他吧  
举报
穷土包
发帖于6年前 19回/1K+阅
共有19个答案 最后回答: 6年前

引用来自“穷土包”的答案

makefile是自动生成的~,~ 手写好像也错了    msys应该可以用tar文件安装的吧   我只是猜想  我都装在cygwin里面了  

仔细看了,编译器如果没指定C99就需要定义4个预处理宏,有两种选择

1. 不用C99
# scons --m32 ,然后用下面的头文件

/* Filename: mongo.no-c99.h */
#define MONGO_HAVE_STDINT
#define MONGO_HAVE_UNISTD
#define MONGO_USE__INT64
#define MONGO_USE_LONG_LONG_INT

#include "mongo.h"

2. 添加C99支持
# scons --m32 --c99
然后在你自己的构建工具中加入 CFLAGS=' -std=c99'
手动的话是这样
gcc -std=c99 -I..\mongodb-mongo-c-driver\src -L..\mongodb-mongo-c-driver -lmongoc -c test.c

--- 共有 1 条评论 ---
匿名人士不好意思,仔细看了SConstruct。gcc定义 -DMONGO_HAVE_STDINT, VC定义 /DMONGO_USE__INT64,不需要4个全用上 6年前 回复

我记得MongoDB用的SCons构建源码,理论上你可以直接用VC的。。

我去试试SCons+VC9,等我回来写报告

引用来自“穷土包”的答案

不用vs的 cgywin能解决的  在找问题

Cygwin 就跟 Linux 原生编译没区别,问题是,在Windows上 VC才是原生啊!

我还在下载Boost,以前没用过

引用来自“穷土包”的答案

哈哈  即使原生 也不喜欢vc     

刚看了资料,编译MongoDB需要准标准Boost和Mozilla的JS引擎SpiderMonkey。貌似太麻烦了点

另外,我也不喜欢VC,但是我用VC的工具链,不用IDE,所以我装的VC2008 Express,使用Cmake和SCons构建。特殊情况还有MinGW+MSYS用。

引用来自“穷土包”的答案

编译的不是mongodb  而是C的接口啊     

报告:SCons 2.1.0 + VC2008 Express 编译正常

E:\mongodb-mongo-c-driver>SCons --m32
scons: Reading SConscript files ...
Compiling for x86
Checking for C type int64_t... (cached) no
Checking for C type int64_t... (cached) no
Checking for C type int64_t... (cached) no
Checking for C type __int64... (cached) no
Checking for C type long long int... (cached) yes
Checking for C library json... (cached) no
scons: done reading SConscript files.
scons: Building targets ...
cl /Fosrc\md5.obj /c src\md5.c /nologo -DMONGO_DLL_BUILD /DMONGO_USE_LONG_LONG_INT /Isrc
md5.c
cl /Fosrc\mongo.obj /c src\mongo.c /nologo -DMONGO_DLL_BUILD /DMONGO_USE_LONG_LONG_INT /Isrc
mongo.c
cl /Fosrc\env_win32.obj /c src\env_win32.c /nologo -DMONGO_DLL_BUILD /DMONGO_USE_LONG_LONG_INT /Isrc
env_win32.c
cl /Fosrc\gridfs.obj /c src\gridfs.c /nologo -DMONGO_DLL_BUILD /DMONGO_USE_LONG_LONG_INT /Isrc
gridfs.c
cl /Fosrc\bson.obj /c src\bson.c /nologo -DMONGO_DLL_BUILD /DMONGO_USE_LONG_LONG_INT /Isrc
bson.c
cl /Fosrc\numbers.obj /c src\numbers.c /nologo -DMONGO_DLL_BUILD /DMONGO_USE_LONG_LONG_INT /Isrc
numbers.c
cl /Fosrc\encoding.obj /c src\encoding.c /nologo -DMONGO_DLL_BUILD /DMONGO_USE_LONG_LONG_INT /Isrc
encoding.c
link /nologo /dll /out:mongoc.dll /implib:mongoc.lib ws2_32.lib src\md5.obj src\mongo.obj src\env_win32.obj src\gridfs.obj src\bson.obj src\numbers.obj src\encoding.obj
正在创建库 mongoc.lib 和对象 mongoc.exp
link /nologo /dll /out:bson.dll /implib:bson.lib ws2_32.lib src\md5.obj src\bson.obj src\numbers.obj src\encoding.obj
正在创建库 bson.lib 和对象 bson.exp
scons: done building targets.

这个没问题的啊     我是生成了 libmongoc.a和libbson.a 用scons test 也能生成exe文件能连接上mongodb但是自己写的  引进libmongoc.a 编译就错了

 

顶部