Erlang Dialyzer PLT文件在不同架构之间的可移植性

时间:2011-07-23 11:19:28

标签: erlang dialyzer

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

3 个答案:

答案 0 :(得分:2)

考虑到dialyzer plt文件是二进制形式,32/64位中的某些元素的二进制大小可能存在一些问题,并且可能存在关于erlang发布的元数据,即使在发布和发布之间也可能无法移植。

顺便说一句,透析器plt文件编译时间不到半小时,之后可以通过命令行进行编辑,所以为什么要移动文件而不是简单地重新创建它(这也有利于始终拥有透析器文件特定版本和架构)?

答案 1 :(得分:1)

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

https://twitter.com/#!/andrewtj/status/94752252941709312

http://groups.google.com/group/erlang-programming/msg/c34baf501eee56c7

答案 2 :(得分:1)

可以复制Dialyzer的PLT,但是在两台机器上PLT中包含的所有文件都需要两个前提条件:

  1. 相同的绝对路径:Dialyzer存储PLT中每个文件的绝对路径。因此,为了在每台机器上找到实际文件,必须是相同的。
  2. 相同版本:对于包含的每个.beam文件,PLT存储相关源代码的MD5校验和(由于启用了debug_info,嵌入在梁文件中)。如果只更改一行,MD5将有所不同,Dialyzer将假定要更改的文件并重新计算存储在PLT中的信息。