如何编译具有C源代码的Frama-C插件?

时间:2015-06-17 09:44:07

标签: frama-c

我创建了一个使用.c源代码的Frama-C插件,我想编译它,但是在添加时

PLUGIN_EXTRA_OPT = file

到我的插件的Makefile,运行make后出现以下错误:

Packing      Myplugin.cmx
file.c:1:24: fatal error: caml/alloc.h: No such file or directory
 #include <caml/alloc.h>
                        ^
compilation terminated.

添加VERBOSEMAKE=yes会提供有关错误原因的一些其他信息:

...
gcc     file.c   -o file
file.c:1:24: fatal error: caml/alloc.h: No such file or directory
...

似乎GCC因某种原因而被调用,而不是ocamlc

如何告诉make正确编译我的.c来源?

1 个答案:

答案 0 :(得分:2)

在这种情况下,PLUGIN_EXTRA_OPT变量的正确语法是包含.o扩展名:

PLUGIN_EXTRA_OPT = file.o

通过这样做,Make应用正确的规则并使用file.o构建ocamlc,然后将其作为ocamlopt命令的附加参数包含在内,以构建插件&#39 ; s .cmx档案。

之前的错误是由于Make将一个隐式规则应用于不存在的file目标,正如运行make -d所示:

...
Considering target file `file'.
 File `file' does not exist.
 Looking for an implicit rule for `file'.
 Trying pattern rule with stem `file'.
 Trying implicit prerequisite `file.c'.
 Found an implicit rule for `file'.
...