在Ubuntu上安装STAC

在Ubuntu上安装STAC,ubuntu,build,installation,ocaml,Ubuntu,Build,Installation,Ocaml,我正在尝试安装STAC来执行污染分析。我已经为STAC安装了per必备组件,即frama-c。然后我从中签出svn 当我在tanalysis目录中运行make时。发现很难为Cil包含库时,它遇到了两个问题 Unbound Cil 我通过添加 -I /usr/local/share/frama-c/lib -I /usr/local/lib/ocaml/3.12.1/cil/ 但当我再次运行make时,它会给出一个错误 b/ocaml/3.12.1/cil/ -I /usr/li

我正在尝试安装STAC来执行污染分析。我已经为STAC安装了per必备组件,即frama-c。然后我从中签出svn

当我在tanalysis目录中运行make时。发现很难为Cil包含库时,它遇到了两个问题

    Unbound Cil
我通过添加

   -I /usr/local/share/frama-c/lib -I /usr/local/lib/ocaml/3.12.1/cil/
但当我再次运行make时,它会给出一个错误

b/ocaml/3.12.1/cil/ -I /usr/lib/frama-c/ -c ptranal.ml
File "ptranal.ml", line 135, characters 36-43:
Error: This expression has type Cil_types.lhost * Cil_types.offset
   but an expression was expected of type
     Cil.lval = Cil.lhost * Cil.offset
make: *** [ptranal] Error 2

请帮助我构建STAC并进行污染分析。

看起来像STAC的Makefile中的一个bug

CFLAGS=-I $(FRAMAC_SHARE)/lib -c
应替换为(未测试)


绝对没有理由让FRAMAC_LIBDIR成为FRAMAC_SHARE的子目录。

-I/usr/local/lib/ocaml/3.12.1/cil/:Frama-C没有在那里安装任何东西。如果系统上存在此目录,可能是因为您以前安装了Cil版本。不要尝试使用它:Frama-C自带自己的修改版Cil。如果我使用默认设置,下面是错误:
ocamlc-用于包污染分析-I/usr/local/share/Frama-C/lib-C olf.ml文件“olf.ml”,第53行,字符0-8:错误:未绑定模块Cil生成:**[olf]错误2
我还尝试修改从lib到libc的路径。但出现相同的错误,
未绑定模块Cil
。我尝试了这个更改,因为lib不存在。请帮助…抱歉,解决方案无法帮助我构建。这是错误:ocamlc-用于包污染分析-I[kernel]用户错误:选项
-print lib dir'未知。有关详细信息,请使用frama-c-帮助。[kernel]Frama-C中止:用户输入无效-c uref.ml/bin/sh:1:语法错误:未终止的带引号的字符串make:**[uref]错误2我尝试删除-print lib dir,但再次无效,下面是错误:ocamlc-用于包装污染分析-I/lib-c uref.ml ocamlc-用于包装污染分析-I/lib-c setp.ml ocamlc-用于包装污染分析-I/lib-c steensgaard.ml ocamlc-用于包装污染分析-I/lib-c olf.ml文件“olf.ml”,第53行,字符0-8:错误:未绑定模块Cil make:**[olf]错误2:可能找不到CIL包。我已经安装了CIL。请帮助我,该选项的名称是
-print lib path
(或
-print libpath
),如
frama-c-内核帮助的输出中所述。抱歉吵闹,我会自己更正答案以避免进一步混淆。非常感谢@Virgile的帮助。我得到了另一个
错误:ocamlc-用于包污染分析-I/usr/local/lib/frama-c-c-c olf.ml文件“olf.ml”,第92行,字符30-40:错误:未绑定模块非常漂亮:**[olf]错误2
非常漂亮
是遗留Cil中的一个旧模块,在frama-c(氮IIRC)的后一版本中消失了,在被Ast_打印机取代几年后。看起来STAC与Frama-C的最新版本不兼容,但我担心在StackOverflow上移植代码有点超出范围。
FRAMAC_LIBDIR:=$(shell frama-c -print-lib-path)
CFLAGS=-I $(FRAMAC_LIBDIR) -c