能否将透析器PLT输出复制并使用到另一台不同架构的机器上?例如,我在一台x86_64 Linux机器上构建了一个PLT文件。我可以在x86 FreeBSD或Windows机器上使用该文件吗?
考虑到dialyzer PLT文件是二进制形式,在32/64位的一些元素的二进制大小方面可能存在一些问题,并且可能关于Erlang版本的元数据在发布和发布之间可能无法移植。
顺便说一句,dialyzer plt文件需要不到半小时的时间来编译,之后可以通过命令行进行编辑,那么为什么要移动文件而不是简单地重新创建它(这也有一个优势,即始终拥有特定版本和架构的dialyzer文件)?
可以复制Dialyzer的PLT,但两台机器上的PLT中包含的所有文件需要两个先决条件:
- 相同的绝对路径: Dialyzer存储PLT中每个文件的绝对路径。因此,为了在每台机器上找到实际的文件,有必要使其相同。
- 相同版本:对于包含的每个.beam文件,PLT存储相关源代码的MD5校验和(由于启用了debug_info而嵌入到beam文件中)。如果仅仅改变了一行,MD5将会不同,Dialyzer将假定文件被改变,并重新计算存储在PLT中的信息。
@andrewtj在Twitter上善意地告诉我Kostis Sagonas的话。Kostis写道,复制PLT文件是可能的,前提是两台机器必须具有相同的配置。(我认为有一个相同的配置是不容易的…)
https://twitter.com/!/andrewtj/地位/94752252941709312
http://groups.google.com/group/erlang-programming/msg/c34baf501eee56c7