构建是为了构建PDG而开发的模块。 我编写了一个使用此模块构建的脚本,但是当我尝试使用以下命令启动此脚本时:
我弄错了:Unbound module Build。 有没有办法访问这个模块。我在我的项目中需要它。 构建是一个示例,但还有其他模块,如集,它提供了读取PDG的功能。但是,像 PdgTypes 这样的其他模块不会出错。如果有人可以帮助我......
在我的文件test.ml中, 让compute = Build.compute_pdg ....
let()= Db.Main.extend main
答案 0 :(得分:3)
你不能这样做。 -load-script
只适用于除Frama-C之外没有任何依赖关系的脚本(或者Frama-C自己的依赖关系,如OCamlgraph)。正如Anne所建议的那样,如果您的代码包含在多个文件中,则应将其编写为插件。
对于一个简单的插件,除了OCaml代码之外,你基本上只需要写一个简短的Makefile
。这个Makefile
主要包含插件的源文件列表和一些其他信息(例如插件的名称),如the developer's manual中所述,其中包含一个小教程。< / p>
或者,如果您只有两个文件,则应该可以将它们手动组装到一个模块中,然后由Frama-C加载。假设您有build.ml
和test.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]