如何强制64位LMDB生成32位数据库?

时间:2017-06-07 08:39:55

标签: c++ c linux build lmdb

使用lmdb库的可执行文件是64位linux格式。

因为可执行文件的依赖库是64位的.Building executable& lmdb lib作为32位解决方案是不可能的。

有什么方法可以强制64位lmdb lib生成32位lmdb数据库。

我需要这个32位数据库文件,因为生成的数据库将导出到32位设备。

注意:64位计算机上生成的数据库无法在32位计算机上运行。

1 个答案:

答案 0 :(得分:5)

我猜,在32位lmdb上使用64位数据库很难实现,因为lmdb基于内存映射。

因此,需要转换器来要求理解基础数据格式。这个链接The LMDB file format似乎是一个良好的开端。

一个廉价的替代方案似乎是将文件转储到64位平台(mdb_dump)并在32位平台(mdb_load)上重新加载。但是,这会导致链接手册页中指出的限制:

  

转储和重新加载使用用户定义的比较函数的数据库将导致使用默认比较函数的新数据库。 在这种情况下,重新加载的数据库很可能会在修复之外被损坏而不允许记录存储和检索。

然而,在搜索互联网时,我在某处读到这可以用来将32位数据库移植到64位。我只能怀疑它应该以相反的方式工作(因为我从未见过格式)。由于转储是文本格式,因此应该可以 - 可以使用中间文本处理步骤。

另一个,恕我直言,相当便宜的替代方案,将在64位平台上运行32位lmdb。据我所知,这在Windows上是常见且常见的,我对Linux并不完全确定,并发现:SE: How to run 32-bit app in Ubuntu 64-bit?。不幸的是,提问者表示在这种特定情况下不是一种选择。

相关问题