Компилятор NK (nk-gen-c
) генерирует набор транспортных методов и типов на основе EDL-, CDL- и IDL-описаний. Транспортные методы и типы нужны для формирования, отправки, приема и обработки IPC-сообщений.
Компилятор NK принимает EDL-, CDL- или IDL-файл и создает следующие файлы:
H
-файл, содержащий объявление и реализацию транспортных методов и типов.D
-файл, в котором перечислены зависимости созданного C
-файла. Этот файл может быть использован для автоматизации сборки с помощью утилиты make
.Синтаксис использования компилятора NK:
nk-gen-c [-I PATH][-o PATH][--types][--interface][--client][--server][--extended-errors][--enforce-alignment-check][--help][--version] FILE
Параметры:
FILE
Путь к EDL-, CDL- или IDL-описанию, для которого необходимо сгенерировать транспортные методы и типы.
-I PATH
Путь к директории, содержащей вспомогательные файлы, необходимые для генерации транспортных методов и типов. По умолчанию эти файлы располагаются в директории /opt/KasperskyOS-Community-Edition-<version>/sysroot-aarch64-kos/include
.
Также может использоваться для добавления других директорий для поиска файлов, необходимых для генерации.
Чтобы указать более одной директории, можно использовать несколько параметров -I
.
-o PATH
Путь к существующей директории, в которой будут созданы файлы, содержащие транспортные методы и типы.
-h, --help
Отображает текст справки.
--version
Отображает версию nk-gen-c
--enforce-alignment-check
Включает обязательную проверку выравнивания обращений к памяти, даже если такая проверка отключена для целевой платформы. Если проверка включена, то компилятор NK добавляет дополнительные проверки выравнивания в код валидаторов IPC-сообщений.
По умолчанию параметры проверки выравнивания обращения к памяти задаются для каждой платформы в файле system.platform
.
--extended-errors
Включает расширенную обработку ошибок в коде транспортных методов.
Выборочная генерация
Чтобы уменьшить количество генерируемого компилятором NK кода, можно использовать флаги выборочной генерации. Например, для программ, реализующих службы, удобно использовать флаг --server
, а для программ, являющихся клиентами служб, удобно использовать флаг --client
.
Если ни один из флагов выборочной генерации не указан, компилятор NK создаст все возможные для указанного файла транспортные типы и методы.
Флаги выборочной генерации для IDL-файлов:
--types
Компилятор создаст только константы и типы, включая переопределенные (typedef
), из входного IDL-файла, а также типы из импортируемых IDL-файлов, которые используются в типах входного файла.
При этом константы и переопределенные типы из импортируемых IDL-файлов не будут явно включены в генерируемые файлы. Если вам необходимо использовать типы из импортируемых файлов в коде, нужно отдельно сгенерировать H-файлы для каждого такого IDL-файла.
--interface
Компилятор создаст файлы, создаваемые с флагом --types
, а также структуры сообщений запросов и ответов для всех методов этой службы.
--client
Компилятор создаст файлы, создаваемые с флагом --interface
, а также клиентские прокси-объекты и функции их инициализации для всех методов этой службы.
--server
Компилятор создаст файлы, создаваемые с флагом --interface
, а также типы и методы диспетчера этой службы.
Флаги выборочной генерации для CDL-файлов и EDL-файлов:
--types
Компилятор создаст файлы, создаваемые с флагом --types
для всех служб, предоставляемых этим компонентом.
При этом явно включены в генерируемые файлы будут только те типы, которые используются в параметрах интерфейсных методов.
--interface
Компилятор создаст файлы, создаваемые с флагом --types
для этого компонента/класса процессов, а также файлы, создаваемые с флагом --interface
для всех предоставляемых этим компонентом.
--client
Компилятор создаст файлы, создаваемые с флагом --interface
, а также клиентские прокси-объекты и функции их инициализации для всех служб, предоставляемых этим компонентом.
--server
Компилятор создаст файлы, создаваемые с флагом --interface
, а также типы и методы диспетчера этого компонента/класса процессов и типы и методы диспетчеров для всех служб, предоставляемых этим компонентом.