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

Raj*_*opu 9 c c++ linux build lmdb

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

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

有什么办法可以强制64位lmdb lib生成一个32位的lmdb数据库.

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

注意:在64位计算机上生成的db将无法在32位计算机上运行.

Sch*_*eff 5

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

因此,需要转换器来要求理解基础数据格式.这个链接LMDB文件格式似乎是一个很好的开端.

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

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

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

另一个,IMHO相当便宜的替代品,将在64位平台上运行32位lmdb.据我所知,这在Windows上很常见,我对Linux并不完全肯定,发现:SE:如何在Ubuntu 64位中运行32位应用程序?.不幸的是,提问者表示在这个具体案例中不是一种选择.