Я пытаюсь создать аннотированный файл с плагином Frama-C E-ACSL. Я создал следующие файлы:
- Insert.c: содержит все структуры для создания связанного списка.
- AxiomTest.c: включает основную функцию, где указаны утверждения, которые она должна выполнять. Все функции и структуры определяются в файле Insert.c
При компиляции/инструментировании программы в руководстве указана следующая терминальная команда:
$ e-acsl-gcc.sh -c <files> -O <output>
Для успешной компиляции Insert.c и AxiomTest.c должны быть связаны, но я не могу найти какой-либо флаг для этого.
Любая помощь? Или есть другой способ сделать это правильно?
e-acsl-gcc.sh -c Insert.c AxiomTest.c -O my_executable
? Обычно скрипт должен принимать множество исходных файлов в качестве аргумента (отсюда<files>
, а не<file>
в руководстве). - person Virgile   schedule 26.04.2018e-acsl-gcc.sh -c Insert.c AxiomTest.c -O my_executable
связывает оба файла, но я все равно получаю сообщение об ошибке: unbound function foo. Эта функция foo определена в файле Intert.c и вызывается в AxiomTest.c внутри предложения@ requires
из аннотаций EACSL. Может быть, EACSL не принимает функцию в аннотации и выдает ошибку? - person Raul Coroban   schedule 28.04.2018my_fct_ptr == f1 || my_fct_ptr == f2
) внутри аннотации ACSL действительно: там разрешены только логические функции и предикаты. И, конечно же, если ошибки произойдут до этапа компоновки, исполняемый файл не будет создан. Если у вас есть конкретные проблемы с ошибками, о которых сообщает Frama-C/E-ACSL, создайте новый вопрос и обязательно включите MCVE показывая нам точную проблему, с которой вы столкнулись. - person Virgile   schedule 28.04.2018