У меня есть проект, который компилируется cmake , и я хочу пакет с snap . Проект включает исполняемый файл и библиотеку (давайте назовем it a и liba ).
Мой snapcraft.yaml файл выглядит так:
name: a
version: "0.9"
summary: xyz
description: xyz
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: strict
apps:
a:
command: a
parts:
a:
plugin: cmake
source: ./a.zip
filesets:
manpages: [ usr/share/man ]
В CMake a зависит от liba (на самом деле a - это просто "оболочка" liba для использования в скриптах bash ). Когда я собираю проект с помощью Snapcraft и устанавливаю этот пакет (установка как - опасно ), выполнение команды a из терминала работает нормально. Но когда я пытаюсь построить приложение, зависящее от liba (используя gcc ), у меня возникает проблема, которая заканчивается на " / usr / bin / x86_64-linux-gnu-ld: не удается найти -la"сообщение об ошибке. Прежде всего, мне нужно включить заголовки, даже если они были установлены в системный каталог по умолчанию * include с помощью « -I / snap / a / current ... » (я понимаю, что snap установить файлы в каталог / snap / , но, возможно, я просто что-то не так делаю с snapcraft.yaml). Затем я получаю сообщение от ld выше.
Я абсолютно новичок в пакетах оснастки, это мой первый проект. Есть ли возможность установить liba в качестве системной библиотеки (отображается при сборке с помощью gcc, с использованием include из системного каталога по умолчанию)?
Возможно, это поможет разделить a и liba на различные пакеты с a , зависящими от сборки liba , но я не уверен, что это поможет решить проблему с установкой общей библиотеки.
У вас есть некоторый опыт с этой проблемой? Любой совет? Спасибо за ответы.