我正在尝试从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 ++库发生了变化,但我不确定如何导航到解决方案。任何帮助将不胜感激。
答案 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>
再次尝试编译,它对我有用。