Как установить Frama- C на Manjaro 18.1.5? - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь установить frama- c в моем дистрибутиве Manjaro 18.1.5, но, что бы я ни пытался, у меня всегда есть ошибка.

Сначала я попытался установить через AUR, и это, кажется, работает, но когда я пытаюсь открыть файл из gui, он завершается неудачно и говорит что-то вроде «неверный ввод пользователя», хотя я использую файлы, которые работают при известной удачной установке.

Редактировать : вот вывод ошибки для этого файла:

[kernel] Parsing max.c (with preprocessing)
[kernel:annot-error] max.c:2: Warning: 
  unbound logic variable INT_MIN. Ignoring logic specification of function max
[kernel] User Error: warning annot-error treated as fatal error.
[kernel] User Error: stopping on file "max.c" that has errors. Add '-kernel-msg-key pp'
  for preprocessing command.

Затем я попытался установить его с помощью opam, поэтому я сначала пытаюсь установить зависимости с зависимостями, но он ничего не устанавливает, затем, когда я пытался установить frama- c, происходит сбой со следующей ошибкой:

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
[ERROR] The compilation of frama-c failed at
        "/home/benoit/.opam/opam-init/hooks/sandbox.sh build make -j7".

#=== ERROR while compiling frama-c.20.0 =======================================#
# context     2.0.5 | linux/x86_64 | ocaml-system.4.09.0 | https://opam.ocaml.org#2d21a0b6
# path        ~/.opam/default/.opam-switch/build/frama-c.20.0
# command     ~/.opam/opam-init/hooks/sandbox.sh build make -j7
# exit-code   2
# env-file    ~/.opam/log/frama-c-4880-6d07ae.env
# output-file ~/.opam/log/frama-c-4880-6d07ae.out
### output ###
# [...]
# Ocamlopt     src/plugins/value/legacy/eval_terms.cmx
# Ocamlopt     src/plugins/value/domains/cvalue/cvalue_transfer.cmx
# Ocamlopt     src/plugins/value/legacy/eval_annots.cmx
# Ocamlopt     src/plugins/value/engine/transfer_logic.cmx
# Ocamlopt     src/plugins/value/domains/cvalue/cvalue_domain.cmx
# /usr/bin/ld: cannot find -lgtksourceview-2.0
# collect2: error: ld returned 1 exit status
# Ocamlopt     src/plugins/value/domains/cvalue/cvalue_specification.cmx
# File "_none_", line 1:
# Error: Error while building custom runtime system
# make: *** [Makefile:1294: bin/viewer.byte] Error 2
# make: *** Waiting for unfinished jobs....

Моя последняя попытка заключалась в ее сборке из источника, но make завершается неудачно со следующей ошибкой:

Ocamlc       src/plugins/server/jbuffer.cmo
File "src/plugins/server/jbuffer.ml", line 23, characters 12-26:
23 | type json = Yojson.Basic.t
                 ^^^^^^^^^^^^^^
Error: Unbound type constructor Yojson.Basic.t
make: *** [share/Makefile.generic:78: src/plugins/server/jbuffer.cmo] Error 2

Мое единственное оставшееся решение - использовать виртуальную машину с debian, но это действительно идеально для меня ... Кто-нибудь имеет представление о том, что я мог делать? Спасибо!

1 Ответ

2 голосов
/ 16 января 2020

В вашем вопросе несколько вопросов, и я считаю, что некоторые из них заслуживают изучения в качестве возможных ошибок или проблем. Я бы порекомендовал попробовать один из официальных каналов поддержки Frama- C:

  • Создание проблемы в Frama- C Gitlab publi c репозиторий ;
  • Или создание проблемы в Frama- C Хранилище моментальных снимков Github (в настоящее время не рекомендуется в пользу репозитория Gitlab, который обновляется ежедневно);
  • Или попытка некоторая интерактивная поддержка, связанная с операцией, в канале IR C #frama-c на freenode. net (интерактивная поддержка часто более эффективна для решения проблем установки, связанных с операцией, особенно из-за того, что заранее сложно узнать, какая информация может быть полезна) .

Обработка ошибок «Недопустимый пользовательский ввод» в GUI

Как правило, при попытке открыть файл в GUI происходит сбой, я бы рекомендуем запустить версию Frama- C для командной строки с именем файла. Его вывод гораздо более подробный и может указывать на наличие проблем с синтаксическим анализом файла (которые могут быть вызваны отсутствующими зависимостями, синтаксисом, отличным от C99, или проблемами конфигурации).

В противном случае вкладка Консоль в GUI должен содержать подробные сообщения об ошибках, которые вы затем можете добавить к этому вопросу SO, если они имеют отношение к пониманию вашей проблемы.

Проблемы с графическими библиотеками в неосновных Linux дистрибутивах

Вторая проблема, которую я вижу в вашем вопросе, это ошибка, связанная с -lgtksourceview-2.0. Это означает, что одна из библиотечных зависимостей для графического интерфейса отсутствует. Возможно, есть способ исправить это, но, по крайней мере, должна быть возможность определить ошибку до компиляции и сообщить о несовместимости ранее. Тот факт, что depext не работал, необычен; возможно, в настоящее время он не очень хорошо поддерживается Манджаро, но его стоит изучить. К сожалению, иногда опам может быть сложным в обращении для начинающих пользователей, поэтому я понимаю, что это немного расстраивает и может занять больше времени, чем вы бы хотели. Но если вы намереваетесь использовать Frama- C или другие пакеты OCaml в течение некоторого разумного промежутка времени, стоит разобраться с некоторыми распространенными ошибками в opam, поскольку это очень полезно для обработки зависимостей.

Обработка проблемы с зависимостями OCaml при компиляции вручную

Наконец, проблема с Yo json, вероятно, связана с версией установленного пакета. В частности, версии до 1.6.0 не имеют типа Yojson.Basic.t. Frama- C используется для поддержки 1.4.1, но для последней версии требуется как минимум 1.6.0. Опять же, не очевидно заранее определить все возможные проблемы с различными версиями пакета, но сообщение о них позволяет нам включать проверки, чтобы предотвратить это в будущем или, по крайней мере, дать более точное сообщение об ошибке.

Обычно opam обрабатывает эту часть, поэтому и рекомендуется даже для ручной компиляции Frama- C, поскольку он помогает управлять своими зависимостями.

В целом, кажется, что некоторая основная проблема с зависимостями в opam depenxt предотвращает Вся цепь от работы должным образом. Ваш отчет содержит много полезной информации, но не все детали, поэтому я считаю, что интерактивный маршрут должен позволять быстро сходиться к работающей установке.

...