Добавление динамических библиотек в образ решения на базе KasperskyOS

Чтобы добавить динамические библиотеки в образ решения на базе KasperskyOS, нужно использовать параметры PACK_DEPS_COPY_ONLY ON, PACK_DEPS_LIBS_PATH и PACK_DEPS_COPY_TARGET в CMake-командах build_kos_qemu_image() и build_kos_hw_image().

Пример:

set(RESOURCES ${CMAKE_SOURCE_DIR}/resources)

set(FSTAB ${RESOURCES}/fstab)

set(DISK_IMG ${CMAKE_CURRENT_BINARY_DIR}/ramdisk0.img)

set(RESOURCES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../resources)

set(EXT4_PART_DIR ${CMAKE_CURRENT_BINARY_DIR}/../system_hdd)

set_target_properties(${vfs_ENTITY} PROPERTIES

EXTRA_ARGS

" - \"-f\"

- \"fstab\""

EXTRA_ENV

" ROOTFS: ramdisk0 / ext4 0"

${blkdev_ENTITY}_REPLACEMENT "${ramdisk_ENTITY};${sdcard_ENTITY}")

add_custom_target(copy-so)

add_custom_command(OUTPUT ${DISK_IMG}

COMMAND ${CMAKE_COMMAND} -E copy_directory ${RESOURCES_DIR}/rootdir ${EXT4_PART_DIR}

COMMAND mke2fs -v -d ${EXT4_PART_DIR} -t ext4 ${DISK_IMG} 40M

DEPENDS copy-so

COMMENT "Creating disk image '${DISK_IMG}' from files in '${EXT4_PART_DIR}' ...")

build_kos_hw_image(kos-image

...

IMAGE_FILES ${ENTITIES_LIST} ${FSTAB} ${DISK_IMG}

PACK_DEPS_COPY_ONLY ON

PACK_DEPS_LIBS_PATH ${EXT4_PART_DIR}/lib

PACK_DEPS_COPY_TARGET copylibs)

if(PLATFORM_SUPPORTS_DYNAMIC_LINKING)

add_dependencies(copy-so copylibs)

endif()

Динамические библиотеки, от которых зависят программы решения, будут добавлены в образ накопителя (например, с файловой системой ext4), который будет включен в образ решения.

Динамические библиотеки, которые загружаются в память вызовом функции dlopen() интерфейса POSIX, не попадут в образ решения.

Система сборки выполняет следующие действия:

В начало