在Mac OS X上安装Frama-C

4
如何在 Mac 上安装当前版本的 Frama-C 及其先决条件?
我有一台运行 Mac OS X 10.6.8 的笔记本电脑和一台运行 Mac OS X 10.7.5 的台式机,可以在上面安装软件。我还可以访问一组运行 Mac OS X 10.8 的机器,如果我礼貌地提出要求,我们的技术支持人员将在这些机器上安装软件。
我有一个对程序分析感兴趣的学生,需要一些我们有希望理解和添加的东西。我已经知道了 Frama-C,并且另一所大学的同事推荐它。
我以前曾尝试安装 Frama-C,但失败了。那位同事评论说他也有过同样的经历。好吧,时代在变化。于是我访问了 Frama-C 网站,对它印象更深,更渴望拥有它,并开始安装。
frama-c.com 下载页面没有任何平台的当前版本(Flourine 3)的二进制文件链接。安装说明链接带我到一个页面,告诉我要下载自动安装程序。什么自动安装程序?
有关旧版 Mac OS X 的说明,但按照它们的指示进行操作并没有成功;加载一组先决条件会导致下一个先决条件(gtksourceview)无法安装。
当然,我检查了旧版本,并且看到 Leopard 版本有一个氮版本,但“请以 root 身份在 / 中解压缩存档”要求我执行不可能的操作。我没有根账户,也永远不会被授权(所有机器都属于大学)。在任何地方安装 gcc 和 clang 都是完全可能的;为什么 Frama-C 要在 / 中?
3个回答

5
除了Pascal的回答,您还可以查看 opam,这是OCaml应用程序的源包管理器。它似乎可以在MacOS X上运行,并且有Frama-C Oxygen和Fluorine的软件包。

4
所有Frama-C二进制包都想要安装在 /(精确地说,在 /usr/local/Frama-C)中,因为Frama-C使用了GTK+和各种与GTK+相关的库,这些库从来没有设计成从除固定位置以外的任何位置运行。它们会从编译时硬编码的路径加载配置文件和资源。GCC和Clang可以安装在任何位置,因为它们不依赖于GTK+。像它们一样,Frama-C命令行版本可以通过此处列出的各种环境变量进行重定位。
请注意,要利用二进制包,您只需要一个符号链接指向您实际提取文件的位置,如果您的管理员可以授予您该权限。二进制包仅适用于一个OS X版本。对于从官方网站提供的软件包,此版本通常为10.6(Snow Leopard)。
我停止制作Frama-C二进制包有两个原因:
1. 通过在过去两个OS X版本中每个版本中删除功能和硬件配置支持,Apple已经以我无法处理的方式分裂了OS X环境。您在问题中提到了10.6、10.7和10.8。我还拥有运行10.6、10.7和10.8的Mac。它们都不兼容(尝试构建包括编译器的软件包时)。
2. 我现在可用的时间要少得多,因为我正在参与创建一家为感兴趣的工业用户提供基于Frama-C的静态分析的创业公司。
话虽如此,开源高级研究原型Frama-C仍在开发和维护中,并且仍然是一个很好的实验平台。除了您已经尝试过的方式之外,在Mac上安装Frama-C而不具备root访问权限有两种方法:
1. 只安装命令行版本。然后唯一的依赖关系是最新版本的OCaml编译器。Frama-C的配置将检测到您没有GTK库,并且不会尝试使用它们。安装应该最多需要20分钟,用于最近的OCaml + 最新的Frama-C。
2. 在虚拟机中安装最新的Linux发行版。使用该发行版的软件包管理器获取所有GTK+依赖项。如果发行版的OCaml软件包足够新,请使用该软件包,然后使用lablgtk-2软件包;否则,请从源代码编译OCaml,然后再编译lablgtk-2。然后编译Frama-C。
对于Fluorine,最旧支持的OCaml版本是3.12.1。

不用担心,Carbon 版本在 Mavericks 上运行良好! :) - Damiii

1
使用MacPorts:
export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig
sudo port install opam
opam init
  Y
eval `opam config env`
sudo port install gtksourceview2 lablgtk2 ocaml-ocamlgraph
opam install frama-c

在执行 "opam init" 前,您必须安装 "ocaml"! - Damiii
Damii:是的,但是sudo port install opam已经安装了OCaml作为依赖项。 - rurban
我确实尝试了你所做的事情,但是我还不能安装它:(至少在Mavericks上) - Damiii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接