Несвязанный модуль Stdlib

#ocaml #ocamlbuild

#ocaml #ocamlbuild

Вопрос:

Однако я пытаюсь создать код с использованием ocamlc, я получил ошибку Error: Unbound module Stdlib

/usr/lib/ocaml/ Каталог включает в себя следующее stdlib.a stdlib.cma stdlib.cxma stdlib.p.a stdlib.p.cxma

Версия OCaml: 4.05.0

Ответ №1:

Стандартная библиотека была переименована из Pervasives в Stdlib совсем недавно. Ваш компилятор создан до изменения; т. Е. компилятор 4.05.0 имеет модуль Pervasives и не имеет модуля Stdlib. Код, который вы пытаетесь скомпилировать, скорее всего, получен после изменения.

Обычно нет причин упоминать имя стандартной библиотеки, потому что оно «повсеместное». Итак, вы можете попробовать удалить «Stdlib». где бы вы его ни увидели. Или вы могли бы попробовать переименовать его в «Pervasives»..

Однако, если код намного более свежий, чем компилятор 4.05.0, вы можете столкнуться с другими проблемами.

Ответ №2:

Stdlib Модуль был представлен в версии 4.07.0. До этого он вызывался Pervasives . Похоже, вы смешиваете установки.

Несколько команд, которые могут помочь распутать его:

  • which ocamlc сообщит вам, где находится компилятор.
  • ocamlc -config сообщит вам, где должна находиться стандартная библиотека.

Также настоятельно рекомендуется использовать opam диспетчер пакетов OCaml для управления установками OCaml, поскольку он позволяет переключаться между несколькими установками и дает вам доступ к последней версии компилятора, как только она будет выпущена.