Я планирую написать библиотеку C, которая будет выступать в качестве «обертки» для нескольких других библиотек. Некоторые из библиотек будут GPL, а некоторые будут проприетарными. Более того, некоторые библиотеки могут быть недоступны во время компиляции, поэтому я планирую, чтобы автоинструменты обнаруживали их во время настройки. Мне также интересно, стоит ли мне поддерживать эти слабые зависимости, а затем обнаруживать их во время выполнения - особенно для проприетарных библиотек. И вот почему:
Не вдаваясь в подробности, библиотека предназначена для предоставления API для общения с различными устройствами, некоторые из которых не имеют драйверов с открытым исходным кодом. В настоящее время сложно программировать для этих устройств, потому что нет стандартного, легкодоступного API для использования. Каждый поставщик предоставляет свой. Есть несколько других доступных API, которые пытаются обернуть их, но они в общем и целом
- C ++ -. * Только 1006 *
- Предназначен для среды Windows с * nix в качестве запоздалой мысли.
- Сбой сборки, если у вас нет зависимостей в нужных местах, т. Е. Полное отсутствие надлежащей системы конфигурирования / сборки.
- Что наиболее важно, разработано таким образом, что они часто ссылаются непосредственно на проприетарные библиотеки, и я почти на 100% уверен, что эти API невозможно будет внедрить в Debian.
Поэтому моей конечной целью является создание очень простого и понятного C API, у которого есть шанс превратить его в дистрибутивы, чтобы люди могли на самом деле писать программы для этих устройств с помощью простого apt-get
.
У меня вопрос: как мне лучше спроектировать библиотеку, чтобы она была совместима с GPL и Debian, но при необходимости иметь возможность обращаться к проприетарным библиотекам?
В идеале, я бы хотел, чтобы пользователь имел возможность получить и получить программу с использованием этой библиотеки, а затем, если драйвер уровня пользователя поставщика установлен в ожидаемом месте, все должно работать "из коробки".
Мое беспокойство двоякое:
- наличие зависимостей от необязательных, проприетарных библиотек означает, что двоичный дистрибутив библиотеки не может быть скомпилирован для динамической ссылки на эти библиотеки, так как они могут или не могут быть доступны.
- пользователь не должен устанавливать зависимости для устройств, которых у него нет, открытых или проприетарных.
Как другие пакеты справляются с этой проблемой связи с проприетарными библиотеками и имеют слабые зависимости во время выполнения? dlopen
правильный путь для всего? Должен ли я dlopen
только фирменный материал? Каковы причины или случаи, когда Debian может отклонить такой пакет?
Наконец, я понимаю, что это, вероятно, не тот форум, на котором можно задать вопрос о политике Debian, поэтому кто-нибудь может указать мне лучшее место, чтобы задать этот вопрос?
Спасибо.