Erlang透析器PLT文件在不同体系结构之间的可移植性

Erlang透析器PLT文件在不同体系结构之间的可移植性,erlang,dialyzer,Erlang,Dialyzer,您能将透析器PLT输出复制并使用到另一台不同结构的机器上吗?例如,我在x86_64 Linux机器上构建了一个PLT文件。我可以在x86 FreeBSD或Windows计算机上使用该文件吗?@andrewtj在Twitter上亲切地告诉我Kostis Sagonas的一句话。Kostis写道,只要两台机器必须具有相同的配置,就可以复制PLT文件。(我认为拥有相同的配置并不容易…) 考虑到透析器plt文件是二进制形式,在32/64位的某些元素的二进制大小方面可能存在一些问题,并且可能存在关于er

您能将透析器PLT输出复制并使用到另一台不同结构的机器上吗?例如,我在x86_64 Linux机器上构建了一个PLT文件。我可以在x86 FreeBSD或Windows计算机上使用该文件吗?

@andrewtj在Twitter上亲切地告诉我Kostis Sagonas的一句话。Kostis写道,只要两台机器必须具有相同的配置,就可以复制PLT文件。(我认为拥有相同的配置并不容易…)


考虑到透析器plt文件是二进制形式,在32/64位的某些元素的二进制大小方面可能存在一些问题,并且可能存在关于erlang版本的元数据,这些元数据在版本和版本之间可能不可移植


顺便说一句,dialyzer plt文件编译只需不到半个小时,之后可以通过命令行进行编辑,那么为什么要移动该文件而不是简单地重新创建它(这也有一个优点,对于特定的版本和体系结构,始终具有dialyzer文件)?

可以复制dialyzer的plt,但对于两台机器上PLT中包含的所有文件,您需要两个先决条件:

  • 相同的绝对路径:透析器存储PLT中每个文件的绝对路径。因此,为了找到每台机器上的实际文件,有必要使其相同
  • 相同版本:对于包含的每个.beam文件,PLT存储相关源代码的MD5校验和(由于启用了调试信息而嵌入到beam文件中)。如果仅更改一行,MD5将不同,透析器将假定文件将更改,并重新计算PLT中存储的信息