我创建了一个使用.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
来源?
答案 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'.
...