从一台 Linux x86_64 机器到另一台 Linux x86_64 机器的 boost 二进制存档是否“可移植”?
该文档表明它是,通过使用术语native binary
,但是,我还没有能够做到这一点。是“我的错”,还是这样的事情不可能?
我确实知道便携式二进制档案,但我知道它们没有经过很好的测试......
编辑:除了 SoapBox 的回答,我发现两台机器上的 boost 库版本需要相同
从一台 Linux x86_64 机器到另一台 Linux x86_64 机器的 boost 二进制存档是否“可移植”?
该文档表明它是,通过使用术语native binary
,但是,我还没有能够做到这一点。是“我的错”,还是这样的事情不可能?
我确实知道便携式二进制档案,但我知道它们没有经过很好的测试......
编辑:除了 SoapBox 的回答,我发现两台机器上的 boost 库版本需要相同
如果两台机器都是 x86-64 CPU 上相同版本的 64 位 Linux,那么您不需要任何特殊的“可移植性”代码或选项。根据定义,这两台机器的二进制格式是相同的。如果一台机器可以加载存档,那么另一台也可以。
这不能保证,但只要底层硬件相同,在不同的操作系统上通常仍然如此。(也就是说,x86-64 上的 64 位窗口应该能够加载在 64 位 Linux x86-64 上创建的存档。)
如果处理器不同,那么您将需要使用“便携式”存档格式。Boost.Serialization 的文本档案应该是可移植的,因为转换为不可移植的二进制表示是在加载时从档案中的文本完成的。
晚了,但是 FWIW,在 boost 序列化库中有一个可移植的二进制存档示例。它应该比文本档案更快,但我没有亲自运行测试。
https://www.boost.org/doc/libs/1_70_0/libs/serialization/example/
以下文件几乎可以复制并粘贴到您的项目中:
便携式二进制存档.hpp
便携二进制oarchive.cpp
便携二进制oarchive.hpp
便携式二进制iarchive.cpp
便携式二进制文件iarchive.hpp
和portable_binary_oarchive
类portable_binary_iarchive
可以用作替代,例如,文本或不可移植的二进制存档类。