在OSX 10.9上编译kyotocabinet-1.2.76

rob*_*tjd 3 kyotocabinet

我试图在OSX 10.9上从这个源代码编译kyoto cabinet:

http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.76.tar.gz

但它失败了:

In file included from kcutil.cc:16:
In file included from ./kcutil.h:19:
./kccommon.h:92:10: fatal error: 'tr1/unordered_map' file not found
#include <tr1/unordered_map>
         ^
2 warnings and 1 error generated.
make: *** [kcutil.o] Error 1
Run Code Online (Sandbox Code Playgroud)

我的理解是,OSX 10.9中的C++库发生了变化,但我不确定如何导航到解决方案.任何帮助,将不胜感激.

rob*_*tjd 8

我得到了一位同事的帮助.您需要修复包含不使用TR1,看来Mavericks不再具有TR1规范

kccommon.h,找到这段代码:

#if __cplusplus > 199711L || defined(__GXX_EXPERIMENTAL_CXX0X__) || defined(_MSC_VER)

#include <unordered_map>
#include <unordered_set>

#else

#include <tr1/unordered_map>
#include <tr1/unordered_set>

namespace std {
using tr1::hash;
using tr1::unordered_map;
using tr1::unordered_set;
}

#endif
Run Code Online (Sandbox Code Playgroud)

删除if else语句,以便留下:

#include <unordered_map>
#include <unordered_set>
Run Code Online (Sandbox Code Playgroud)

尝试再次编译,它对我有用.