我无法安装任何ocaml模块

时间:2019-06-09 10:00:11

标签: ocaml

我正在尝试在ocaml中安装线性编程求解器,但是我无法使用任何模块

我发现了这个:https://github.com/Gbury/Ocaml-simplex 这是https://github.com/smimram/ocaml-glpk

我只是遵循所写的内容(进行安装/进行安装),但是每次安装后,每次尝试open Glpkopen Simplex时,它都无法正常工作。实际上,甚至包括的示例文件也不起作用

我不知道我做错了什么还是那些模块不起作用

请帮助我,我正在生气。

有关我的问题的其他信息:

我正在使用Debian,我猜是最新版本。要安装模块,我下载了zip文件,安装了必需的模块,然后解压缩了./configuremakemake install,就像在GitHub上写的一样。

但是当我打开一个示例测试文件时,该文件以open Glpk(我要安装的模块)开头,当我尝试编译时出现错误:

  open Glpk
       ^^^^
Error: Unbound module Glpk

我的意思是我已经找到了3个用于制作线性规划求解器的模块:

而且我什么也不能工作。

2 个答案:

答案 0 :(得分:3)

根据您的描述,您的问题不是安装库而是使用它们。安装库之后,您仍然需要告知编译器该库的已编译接口文件(.cmi)在哪里,以及应该链接哪些对象文件(即.cm(x)o和.cm(x))。 a)。

让软件包管理器(如opam)和构建工具(如dune)来照顾这些细节将容易得多。

例如,使用opam和dune,您可以先安装ocplib-simplex:

opam install simplex

然后可以使用沙丘文件从使用该库的main.ml文件构建可执行文件

(executable (name main) (libraries ocplib-simplex) )

并致电

 dune build main.exe

答案 1 :(得分:2)

我设法让Glpk立即工作。我认为您应该对OCaml软件包管理器OPAM有所了解。其目的恰恰是使库安装尽可能容易。这是一个循序渐进的步骤:

先决条件

我将假设您已安装OPAM。如果不是这种情况,您将找到所需的信息here。使OPAM正常工作的最简单方法是在shell中执行以下命令:

sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh) && \
  opam init && \
  eval $(opam env)

安装Glpk

首先,我尝试按原样安装Glpk。

opam install glpk

此操作失败,并出现以下错误:

<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
┌─ The following actions failed
│ λ build glpk 0.1.8
└─ 
╶─ No changes have been performed

The packages you requested declare the following system dependencies. Please make sure they are installed before retrying:
    libglpk-dev

这是因为OCaml库Glpk实际上是对需要单独安装的系统库的绑定。在Debian上,您可以使用apt进行此操作。

sudo apt install libglpk-dev

然后我尝试安装Glpk。

opam install glpk

成功。很好。

需要Glpk

现在已经安装了Glpk库,您需要对其进行使用才能使其可用。

在REPL中

在使用OCaml顶层时,需要使用以下命令才能要求Glpk。

#use "topfind";;
#require "glpk";;

在项目中

如果要在成熟的项目中使用库(包含多个文件,可执行文件等),则应使用构建系统。当今最流行的OCaml构建系统是Dune,Octachron在his answer中进行了介绍。

其他注意事项

您应该考虑阅读Real World OCaml,这是一本很棒的书,从根本上讲授了使用OCaml构建软件所需的一切。