在OSX 10.9上编译kyotocabinet-1.2.76

时间:2014-02-28 09:00:25

标签: 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

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

1 个答案:

答案 0 :(得分: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

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

#include <unordered_map>
#include <unordered_set>

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