我正在尝试为 frama-c 开发一个插件。我确实构建了包含多个文件的应用程序,然后创建了makefile
引用我需要的所有文件。
我可以使用make
然后make install
执行插件。当我在函数中调用ocamlyices
库中的函数时出现我的问题...
我仍然可以进行 make 和 make install ,当我尝试执行时,出现以下错误:
[kernel] warning: cannot load plug-in 'name' (incompatible with Fluorine-20130601).
[kernel] user error: option `<name>' is unknown.
use `frama-c -help' for more information.
[kernel] Frama-C aborted: invalid user input.
所以它说当我添加对ocamlyices
函数的调用时它是不兼容的。我在某处缺少任何选项/配置吗?
谢谢您的帮助。
最终解决方案如下所示:
FRAMAC_SHARE := $(shell frama-c.byte -print-path)
FRAMAC_LIBDIR := $(shell frama-c.byte -print-libpath)
PLUGIN_NAME = Fact
# All needed files
PLUGIN_CMO = ../base/basic_types concolic_search run_fact ../lib/lib
PLUGIN_DOCFLAGS = -I ../base -I ../lib -I $(YICES) -I /usr/lib/ocaml/batteries -I ../instrumentation
PLUGIN_BFLAGS = -I ../base -I ../lib -I $(YICES) -I ../instrumentation
PLUGIN_OFLAGS = -I ../base -I ../lib -I $(YICES) -I ../instrumentation
PLUGIN_EXTRA_BYTE = $(YICES)/ocamlyices.cma
PLUGIN_EXTRA_OPT = $(YICES)/ocamlyices.cmxa
include $(FRAMAC_SHARE)/Makefile.dynamic
变量 $(YICES) 定义为
export YICES="/usr/local/lib/ocaml/3.12.1/ocamlyices"