我如何使用为Frama-C插件编写的模块?

时间:2015-04-21 13:22:25

标签: frama-c

构建是为了构建PDG而开发的模块。 我编写了一个使用此模块构建的脚本,但是当我尝试使用以下命令启动此脚本时:

frama -c -load-script test.ml

我弄错了:Unbound module Build。 有没有办法访问这个模块。我在我的项目中需要它。 构建是一个示例,但还有其他模块,如,它提供了读取PDG的功能。但是,像 PdgTypes 这样的其他模块不会出错。如果有人可以帮助我......

在我的文件test.ml中, 让compute = Build.compute_pdg ....

let()= Db.Main.extend main

1 个答案:

答案 0 :(得分:3)

你不能这样做。 -load-script只适用于除Frama-C之外没有任何依赖关系的脚本(或者Frama-C自己的依赖关系,如OCamlgraph)。正如Anne所建议的那样,如果您的代码包含在多个文件中,则应将其编写为插件。

对于一个简单的插件,除了OCaml代码之外,你基本上只需要写一个简短的Makefile。这个Makefile主要包含插件的源文件列表和一些其他信息(例如插件的名称),如the developer's manual中所述,其中包含一个小教程。< / p>

或者,如果您只有两个文件,则应该可以将它们手动组装到一个模块中,然后由Frama-C加载。假设您有build.mltest.ml,您可以(使用Sodium 版本)

ocamlopt -I $(frama-c-config -print-libpath) -c build.ml
ocamlopt -I $(frama-c-config -print-libpath) -c test.ml
ocamlopt -shared -o script.cmxs build.cmx test.cmx
frama-c -load-module script.cmxs [other options] [files]