无法通过调用ocamlyices函数将插件加载到frama-c

时间:2014-04-02 13:58:43

标签: frama-c

我正在尝试为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"

1 个答案:

答案 0 :(得分:1)

正如Anne所提到的,如果您的插件使用的是Frama-C本身尚未包含的外部库,则需要比基本插件更多的步骤,尤其是设置PLUGIN_EXTRA_BYTEPLUGIN_EXTRA_OPT到您希望链接到插件的外部库。可能还需要使用PLUGIN_LINK_BFLAGSPLUGIN_LINK_OFLAGS调整传递给链接器的标志,但这很大程度上取决于ocamlyices本身。有关可用于自定义插件编译的变量的更多信息,请参见Frama-C's development guide的第5.3.3节。