Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ocaml Frama-C铝材“;未绑定模块GMenu“;_Ocaml_Frama C - Fatal编程技术网

Ocaml Frama-C铝材“;未绑定模块GMenu“;

Ocaml Frama-C铝材“;未绑定模块GMenu“;,ocaml,frama-c,Ocaml,Frama C,在Fedora21上,我在安装了Frama-C的所有先决条件后,从源代码处编译了Frama-C Aluminal发行版。我的OCaml版本是4.02.3。Frama-C和Frama-C GUI工作良好。我正在尝试遵循的第2.3节“ViewCfg插件”。但是,在第2.3.4节“扩展Frama-C GUI”中,在添加GUI扩展代码并使用“-load script”选项运行它之后,我得到以下消息: File "cfg_print.ml", line 87, characters 19-43: Erro

在Fedora21上,我在安装了Frama-C的所有先决条件后,从源代码处编译了Frama-C Aluminal发行版。我的OCaml版本是4.02.3。Frama-C和Frama-C GUI工作良好。我正在尝试遵循的第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 =
我在谷歌上搜索了“unboundmodulegmenu”,但没有找到任何有用的东西。我在使用Frama-C的Neon和Na钠版本时也从未遇到过这个错误。有趣的是,如果我跳过这一节,并遵循第2.3.5节“拆分文件并编写生成文件”,我就不会再收到“Unbound module GMenu”消息,而且这个示例也可以正常工作


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

您的Frama-C安装可能还可以。您观察到的是在我们转换到OCamlfind时引入的一个bug。我们将为Frama-C硅修复它

如果您真的想使用脚本,以下是需要应用于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 () ;

现在我得到了“ocamlopt.opt:unknown option'-package.”,后面是一个ocamlopt选项列表。知道现在怎么了吗?这很奇怪:
ocamlopt.opt
永远不应该被调用。相反,应该使用
ocamlfind-ocaml
。是否安装了ocamlfind并用于编译Frama-C(应该安装,但永远不知道)。是否安装了ocamlfind。我刚刚使用了
/configure&&make&&sudo make install
来编译和安装Frama-C,但不幸的是我没有保存输出,所以我不知道是否使用ocamlfind来编译Frama-C。我仍然有config.log。这会有帮助吗?我自己手动编辑dynamic.ml并在其中硬编码
ocamlfind ocamlopt
,实际上可以让它工作,但我想这不是修复它的最佳方法。在你们发布Frama-C的下一个版本之前,我暂时没问题。
share/Makefile.config
config.ml
都应该包含相应变量的
ocamlfind-ocaml
ocamlfind-ocamlopt
。如果其中一个(或两个)包含其他内容,则表示某个地方存在错误。实际上,您的
config.log
可能会有所帮助。但是首先,命令
ocamlfind
ocamlfind-ocamlopt-where
产生了什么?