Проблема с установкой компилятора CompCert C в Ubuntu

#c #compcert

#c #compcert

Вопрос:

Я устанавливаю компилятор CompCert C, как указано здесь: https://compcert.org/man/manual002.html .

Однако я застрял на этапе, когда я «Запускаю сценарий настройки с соответствующими параметрами: ./configure [option …] target »

Вывод на консоль:

 ~/compcert/CompCert-3.8$ ./configure -use-external-MenhirLib x86_64-linux
Testing assembler support for CFI directives... yes
Testing linker support for '-no-pie' / '-nopie' option... yes, '-no-pie'
Testing Coq... version 8.11.0 -- good!
Testing OCaml... version 4.08.1 -- good!
Testing OCaml native-code compiler...yes
Testing OCaml .opt compilers... yes
Testing Menhir... version 20200123 -- good!
Error: cannot determine the location of the Menhir API library.
This can be due to an incorrect Menhir package.
Consider using the OPAM package for Menhir.
Testing GNU make... version 4.2.1 (command 'make') -- good!
One or several required tools are missing or too old.  Aborting.
 

Я использую Ubuntu 20.04 LTS.

[Редактировать: мне удалось запустить ./configure . Однако я не могу воспроизвести точный метод, как я это сделал. Теперь я застрял в другой части.]

Последующий вопрос:

При запуске make all я получаю следующий вывод:

 /compcert/CompCert-3.8$ make all
make proof
make[1]: Entering directory '/home/user/compcert/CompCert-3.8'
COQC Axioms.v
Error: Can't find file ./Axioms.v
make[1]: *** [Makefile:226: Axioms.vo] Error 1
make[1]: Leaving directory '/home/user/compcert/CompCert-3.8'
make: *** [Makefile:155: all] Error 2
 

Я исправил эту проблему, скопировав lib/Axiom.v в корень. make all Затем пожаловался на другую библиотеку, lib/ поэтому я переместил их кучу, пока не получил следующую ошибку:

 ~/compcert/CompCert-3.8$ make all
make proof
make[1]: Entering directory '/home/user/compcert/CompCert-3.8'
COQC Ordered.v
File "./Ordered.v", line 90, characters 16-19:
Error: The reference int was not found in the current environment.

make[1]: *** [Makefile:226: Ordered.vo] Error 1
make[1]: Leaving directory '/home/user/compcert/CompCert-3.8'
make: *** [Makefile:155: all] Error 2
 

И теперь я снова застрял.

Ответ №1:

Похоже, у вас неправильная версия menhirLib. Посмотрите эти строки в configure скрипте в системе сборки, которые приводят к этой ошибке. Я думаю, проблема в том, что вы установили другую версию menhirLib , возможно, с помощью вашего менеджера пакетов.

Я предлагаю вам выполнить следующие команды для установки последней menhirLib версии из opam:

 opam update
opam install menhir menhirLib
 

Это должно помочь.

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

1. Я получаю этот вывод при выполнении инструкций: $ opam install menhir menhirLib [NOTE] Package menhirLib is already installed (current version is 20210310). [NOTE] Package menhir is already installed (current version is 20210310). В инструкциях по установке указано, что он должен иметь «Генератор синтаксического анализа Menhir версии 20190626 или новее». [Править. Пожалуйста, простите меня за отсутствие новых строк в блоке кода]

2. @Keyboard_Crasher Ага, похоже, вы установили в своей системе другую версию ocaml. Из вашего первоначального сообщения следует, что у вас есть версия Menhir 20200123 , но opam install говорится , что текущая версия 20210310 .

3. Можете ли вы показать вывод opam switch list команды?

4. opam switch list показывает только, что моя версия Ocaml равна 4.08.1. Однако теперь я могу работать ./configure без ошибок. Спасибо за вашу помощь.