Файл «_none», строка 1: Ошибка: Требуемый модуль » » недоступен

#makefile #ocaml

Вопрос:

Файл make был выполнен, в каждом файле нет сообщений об ошибках. Однако в терминале я получил:

 File "_none_", line 1: Error: Required module `Prettyprint' is unavailable  

Это Prettyprint.ml один из моих файлов. Что означает этот отчет об ошибке? Спасибо вам за вашу помощь.

Первое редактирование: мой файл makefile выглядит так:

 @echo "# Lexer amp; Parser:" ocamlc -g -c parser.mli lexer.ml parser.ml @echo "# mainfile" ocamlc -g -c TransitionalSemantics.ml ocamlc -g -o main str.cma AbstractSyntax.cmo  TransitionalSemantics.cmo Prettyprint.cmo StaticSemantics.cmo  lexer.cmo parser.cmo  

В моем терминале отчет об ошибке начинается с:

 ocamlc -g -o main str.cma AbstractSyntax.cmo  TransitionalSemantics.cmo Prettyprint.cmo StaticSemantics.cmo  lexer.cmo parser.cmo File "_none_", line 1: Error: Required module `Prettyprint' is unavailable make: *** [all] Error 2  

Ответ №1:

Объектные файлы должны быть связаны в порядке, совместимом с их орграфом зависимости: если один из ваших модулей зависит от Prettyprint модуля, он должен быть связан после prettyprint.cmo .

Начиная с версии 4.13, сообщение об ошибке является более информативным и выглядит следующим образом

 File "_none_", line 1: Error: Wrong link order: B depends on A, B depends on A   

Ответ №2:

Вы должны показать, что именно вы сделали, чтобы получить эту ошибку. В противном случае нам придется гадать 🙂

Эта File "_none_" часть означает, что вы вводите текст на верхнем уровне, поэтому файла как такового нет.

Эта Error часть означает, что верхний уровень не может найти ваш названный модуль Prettyprint . Возможно, вам нужно загрузить его, прежде чем вы сделаете что-то еще, что вы сделали:

 # #load "prettyprint.cmo"  

(Первое # здесь-приглашение верхнего уровня. Второе-это то, что вы действительно должны напечатать.)

Если вы расширите свой вопрос, включив в него более подробную информацию, вы, возможно, получите более полезный ответ.

Комментарии:

1. Спасибо вам за ваш любезный ответ и руководство. Да, я уточню свой вопрос. Действительно, из вашего ответа я узнал, как продвигаться на высший уровень.