gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:14:08 28 4
gpt4 key购买 nike

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

因为可执行文件的依赖库是 64 位的。将可执行文件和 lmdb 库构建为 32 位解决方案是不可能的。

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

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

注意:在 64 位机器上生成的数据库在 32 位机器上不起作用。

最佳答案

我猜,在 32 位 lmdb 上使用 64 位数据库很难甚至不可能,因为 lmdb 基于内存映射。

因此,需要了解底层数据格式的转换器。此链接The LMDB file format似乎是一个好的开始。

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

Dumping and reloading databases that use user-defined comparison functions will result in new databases that use the default comparison functions. In this case it is quite likely that the reloaded database will be damaged beyond repair permitting neither record storage nor retrieval.

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

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

关于c++ - 如何强制 64 位 LMDB 生成 32 位数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44407659/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com