boost::档案:binary_ (i / o)档案的可移植性

boost::archive::binary_(i/o)archive portability

本文关键字:档案 可移植性 binary boost      更新时间:2023-10-16

从一台Linux x86_64机器"可移植"到另一台Linux x86_64机器吗?

文档表明它是,通过使用术语native binary,然而,我还没有能够做到这一点。是"我的错",还是这种事不可能发生?

我确实知道可移植二进制文件,但我知道它们没有经过很好的测试…

编辑:除了SoapBox的答案,我发现boost库版本需要在两台机器上是相同的

如果两台机器在x86-64 CPU上使用相同版本的64位Linux,那么您不需要任何特殊的"可移植性"代码或选项。根据定义,这两台机器的二进制格式是相同的。如果一台机器可以加载存档,那么另一台也可以。

这不能保证,但在不同的操作系统上仍然是正确的,只要底层硬件是相同的。(也就是说,x86-64上的64位windows应该能够加载在64位Linux x86-64上创建的存档。)

如果处理器不同,则需要使用"可移植"存档格式。提振。序列化的文本存档应该是可移植的,因为从存档中的文本到不可移植的二进制表示的转换是在加载时完成的。

晚了,但是顺便说一下,boost序列化库中有一个可移植的二进制归档示例。它应该比文本存档快,但我没有亲自运行测试。

https://www.boost.org/doc/libs/1_70_0/libs/serialization/example/

下面的文件几乎都是复制&粘贴到你的项目:

portable_binary_archive.hpp

portable_binary_oarchive.cpp

portable_binary_oarchive.hpp

portable_binary_iarchive.cpp

portable_binary_iarchive.hpp

portable_binary_oarchiveportable_binary_iarchive类可以用作dropin,例如,代替文本或不可移植的二进制归档类。