我尝试使用“scons”命令在 Cygwin 上编译 MongoDB C++ 驱动程序,但出现以下错误:
src/mongo/db/nonce.cpp:48:20: error: ‘srandomdev’ was not declared in this scope
那是什么库?
谢谢。
srandomdev 函数在 BSD 或 OSX 系统上的stdlib.h中可用,但在 Cygwin 或 Linux 等 GNU 系统上不可用。
看起来构建脚本无法识别您在 Cygwin 上运行的事实。您可以尝试几个选项。最简单的是
如果没有 Windows 机器对此进行测试,很难确认这是否适合您。在src/mongo/platform/random.cpp中,编辑第 108 行
#elif defined(__linux__) || defined(__sunos__) || defined(__APPLE__)
成为
#elif defined(__linux__) || defined(__sunos__) || defined(__APPLE__) || defined(__CYGWIN__)
找到src/mongo/platform/random.cpp的行(在我的版本中为 141),看起来像
#else
class SRandSecureRandom : public SecureRandom {
public:
删除直到#endif
子句的行,然后编辑
#elif defined(__linux__) || defined(__sunos__) || defined(__APPLE__)
简单地成为
#else