向Ocaml兜售opam包装的地方

问题描述 投票:0回答:3

我对Ocaml很陌生。我曾尝试从头开始在两台不同的计算机(都是Linux Mint)上安装它,并且两次都遇到了此问题。

当我安装带有opam的软件包时(特别是Base,但Core也会发生),ocaml找不到它。

$ opam install Base
[NOTE] Package base is already installed (current version is v0.11.1).
$ ocaml -open Base
    OCaml version 4.05.0

File "command line", line 1:
Error: Unbound module Base

ocaml似乎位于/ usr / lib / ocaml中,其二进制文件位于/ usr / bin /中,而opam似乎将所有内容都放入〜/ .opam / packages中。

如何获取ocaml以查看与opam一起安装的软件包?我发现许多涉及未绑定模块的问答错误,但似乎都没有为我解决的问题,或者它们似乎已过时。另外,我知道我的软件包管理器Ocaml尚未完全更新,但是我也从源代码安装了4.10.0,仍然存在问题。

ocaml development-environment opam
3个回答
1
投票
$ opam install dune

然后我执行]

$ eval $(opam config env)

为了在我的终端机中设置opam。 (尽管我对所有opam安装都说“是”,但我似乎每次打开终端时都需要运行此程序,因此我可能会将其添加到〜/ .profile中。)

文件myproject / helloworld.ml(请注意不需要“ Open Base”)

Base.Printf.ifprintf "Hello, World\n"

文件myproject / dune

(executable
  (name helloworld)
  (libraries base))

然后我跑了

$ dune build helloworld.exe

为了完成答案,如果需要将已安装的程序包加载到OCaml交互式顶层(又名REPL,又名ocaml实用程序(或utop)),则可以在启动后发出以下命令ocaml
1

#use "topfind";; #require "base";; 然后您可以执行open Base(这只会打开名称空间)并使用base库提供的其他模块。

topfind工具可能未安装在新的opam交换机上,所以请确保它在那儿]]

opam install ocamlfind

[另外,要快速构建一个简单的应用程序,而不是使用沙丘,您可以使用ocamlbuild,例如,假设主二进制代码位于文件example.ml中,并且您想使用base库,

ocamlbuild -package base example.native


1
)此处的#字符是输入的一部分,而不是提示,即,您必须输入它,因此它看起来像]]

# #use "topfind";;


0
投票
1
© www.soinside.com 2019 - 2024. All rights reserved.