弗拉玛-C铝"Unbound module GMenu"



在Fedora 21上,我在安装了所有先决条件后,从源代码编译了Frama-C Aluminum发行版。我的OCaml版本是4.02.3。Frama-C和Frama-C GUI运行良好。我正在努力遵循Frama-C插件开发指南的第2.3节"ViewCfg插件"。然而,在第2.3.4节"扩展Frama-C GUI"中,在我添加GUI扩展代码并使用"-load script"选项运行它之后,我得到以下消息:

File "cfg_print.ml", line 87, characters 19-43:
Error: Unbound module GMenu
[kernel] user error: compilation of 'cfg_print.ml' failed

第86-87行为:

let cfg_selector
    (popup_factory:GMenu.menu GMenu.factory) main_ui ~button:_ localizable =

我在谷歌上搜索了"unboundmodule gmenu",但没有发现任何有用的东西。我在使用Frama-C的霓虹灯和钠版本时也从未遇到过这个错误。有趣的是,如果我跳过这一节,按照第2.3.5节"拆分文件并编写Makefile",我将不再收到"Unboundmodule GMenu"消息,并且该示例运行良好。

如果非要我猜测的话,当我使用"-load script"选项时,Frama-C(或我的OCaml版本,无论情况如何)显然由于某种原因找不到Gtk库。但是如果我使用make,OCaml可以找到Gtk库。我安装Frama-C和/或Gtk库的方式可能有问题吗?我该如何检查,或者更重要的是,我该如何修复?

您的Frama-C安装可能还可以。您观察到的是在我们过渡到OCamlfind时引入的一个错误。我们将为Frama-C Silicium修复它。

如果你真的想使用脚本,下面是你需要应用于Frama-C源的补丁:

--- a/src/kernel_services/plugin_entry_points/dynamic.ml
+++ b/src/kernel_services/plugin_entry_points/dynamic.ml
@@ -236,7 +236,7 @@ let load_script base =
     else
       Format.fprintf fmt "%s -c" Config.ocamlc ;
     Format.fprintf fmt " -w Ly -warn-error A -I %s" Config.libdir ;
-    if !Config.is_gui then Format.pp_print_string fmt " -I +lablgtk" ;
+    if !Config.is_gui then Format.pp_print_string fmt " -package lablgtk2" ;
     List.iter (fun p -> Format.fprintf fmt " -I %s" p) !load_path ;
     Format.fprintf fmt " %s.ml" base ;
     Format.pp_print_flush fmt () ;

相关内容

最新更新