Я создал свой собственный плагин Frama-C, следуя инструкциям Руководства по разработке Frama-C (https://frama -c.com / download / frama-c-plugin-development-guide.pdf ).
Однако мне нужно использовать модуль Mutex , предоставленный руководством Ocaml (http://caml.inria.fr/pub/docs/manual-ocaml/libref/Mutex.html) в моих файлах .ml. Чтобы использовать этот модуль, мне нужна определенная командная строка:
ocamlc -thread unix.cma threads.cma myfiles.ml
(как объяснено здесь: Не найден модуль OCaml Mutex ).
Чтобы скомпилировать мойя использую Makefile, который создает плагин ( Руководство по разработке плагинов стр. 33). Поэтому я пытаюсь связать эти файлы .cma и параметр -thread с этим Makefile ...и у меня ничего не получилось. Как мне загрузить этот модуль Mutex?
Что я пробовал:
- Я посмотрел в файле, автоматически сгенерированном Frama-C: .Makefile.plugin.generated , если в моем Makefile была переменная для вызова и изменения (того же типа, что и переменная PLUGIN_CMO для вызова моих файлов .ml), но я не нашел такой переменной.
Я пытался с некоторыми переменными, которые определены в сгенерированном .Makefile.plugin.generated таким образом:
Я написал следующие строки в своем Makefile:
PLUBIN_EXTRA_BYTE = unix.cma threads.cma
или TARGET_TOP_CMA = unix.cma threads.cma
и для опции thread :
PLUGIN_OFLAGS = -thread
или PLUGIN_LINK_BFLAGS= -thread
или PLUGIN_BFLAGS= -thread
Но никогда не было Модуль Mutex распознан, и я точно не знаю, хорошее ли это решение ...
Наконец, я протестировал с использованием модуля
Olddynlink , предоставленного Frama-C (
http://arvidj.eu/frama/frama-c-Aluminium-20160501_api/frama-c-api/html/FCDynlink.OldDynlink.html#VALloadfile) со значением
loadfile или с использованием модуля
Dynlink (
http://caml.inria.fr/pub/docs/manual-ocaml/libref/Dynlink.html#VALloadfile) и его значение
loadfile , но оно тоже не сработало:
Я написал:
open Dynlink
loadfile "unix.cma";;
loadfile "threads.cma";;
в соответствующем .ml-файле.
Но всегда одна и та же ошибка: Unbound module Mutex
.