使用opam安装Frama-C时出错(Ubuntu 14.04 LTS)

时间:2017-04-19 23:27:09

标签: frama-c opam

尝试使用推荐的opam方法安装Frama-C会出现以下错误:

### stdout ###
# Cleaning     Installation directory
# Installing   WP shared files
### stderr ###
# /bin/sh: 1: src/plugins/wp/share/instwp: not found
# make: *** [src/plugins/wp/Makefile:355: install] Error 127

以下是使用的命令:

# install opam
$ wget https://raw.github.com/ocaml/opam/master/shell/opam_installer.sh -O - | sh -s /usr/local/bin
# configure opam
$ eval `opam config env`
$ opam config setup -a
# install frama-c
$ opam install frama-c-base

修改:这是opam install -v frama-c-base的输出:https://pastebin.com/eMH08ugA

Edit2:有问题的系统正在运行Linux Mint 17.3(Ubuntu 14.04 LTS上游);软件存储库中的Ubuntu软件包是Make 3.81(未经测试),虽然在遇到此错误时已经升级到Make 4.2

1 个答案:

答案 0 :(得分:4)

我能够重现这个问题,罪魁祸首似乎是Make 4.2,特别是this bug

  

bug#44742:没有构建双冒号的双重dep [并行构建]

Frama-C makefile中的一些规则使用双冒号,默认情况下-j%{jobs}%opam Frama-C文件中设置,以加快编译速度。

不幸的是,当使用特定版本的Make时,似乎这两个组合导致instwp文件(以及其他文件)没有被构建,尽管它在WP makefile中存在规则。

我默认使用Make 4.2.1,我没有这个问题(所有文件都按预期生成,make install成功)。如果我在没有-j的情况下手动编译Frama-C,我也没有问题。

如果您无法更新Make版本,可以尝试使用opam install -j 1 frama-c,它应覆盖jobs变量并禁用Frama-C的并行编译,从而避免错误。

不过,我的一般建议是:

  1. 安装更新的OCaml(至少4.02.3,它应该与OCaml 4.02.1中几乎所有可用的软件包兼容),以确保最新版本的Frama-C可用(Frama-C Silicon在OCaml 4.02.1)中不可用;

  2. 如果可以,请安装frama-c本身,而不是frama-c-base,因为唯一的区别是所需的包,即GUI的包。在运行opam install frama-c之前,您可能需要执行以下操作:

    opam install depext
    opam depext frama-c
    

    第一行将安装depext,它可以找到您的发行版的外部依赖项,第二行将应用depext到Frama-C,从而提示您安装您的发行版中可用的外部依赖项。 / p>