1

我尝试使用“scons”命令在 Cygwin 上编译 MongoDB C++ 驱动程序,但出现以下错误:

src/mongo/db/nonce.cpp:48:20: error: ‘srandomdev’ was not declared in this scope

那是什么库?

谢谢。

4

1 回答 1

2

srandomdev 函数在 BSD 或 OSX 系统上的stdlib.h中可用,但在 Cygwin 或 Linux 等 GNU 系统上不可用。

看起来构建脚本无法识别您在 Cygwin 上运行的事实。您可以尝试几个选项。最简单的是

更改 ifdef 子句

如果没有 Windows 机器对此进行测试,很难确认这是否适合您。在src/mongo/platform/random.cpp中,编辑第 108 行

#elif defined(__linux__) || defined(__sunos__) || defined(__APPLE__)

成为

#elif defined(__linux__) || defined(__sunos__) || defined(__APPLE__) || defined(__CYGWIN__)

删除最后一个 else 子句

找到src/mongo/platform/random.cpp的行(在我的版本中为 141),看起来像

#else
class SRandSecureRandom : public SecureRandom {
public:

删除直到#endif子句的行,然后编辑

#elif defined(__linux__) || defined(__sunos__) || defined(__APPLE__)

简单地成为

#else
于 2013-02-19T16:03:13.737 回答