Если это приложение, моим первым выбором было бы отправить статически связанный одиночный исполняемый файл.У меня была возможность работать с продуктом, который был отправлен на 5 платформ (Win2K, WinXp, Linux, Solaris, Tru64-Unix) и полагал, что поддержка разделяемых библиотек или библиотек DLL с большой базой данных - чертовски сложная задача. Предположим, что это нетривиальное приложение, которое включает использование стороннего графического интерфейса, потоков и т. Д. Используя C++, нет реального в одном направлении делать это на всех платформах. Это означает, что вам все равно придется поддерживать разные кодовые базы для разных платформ. Затем на разных платформах существуют некоторые странные поведения (ошибки) сторонних библиотек. Все это создаст нагрузку, если приложение будет отправлено с использованием разных версий библиотеки, то есть различные версии должны быть привязаны к различным платформам. Я видел людей, отправляющих библиотеки на все платформы, когда исправление предназначено только для конкретной платформы, чтобы избежать путаницы версий. Но это не так просто, клиент часто имеет другой подход к тому, как он/она хочет обновить/запланировать, что также необходимо учитывать.
Конечно, если бинарный файл, который вы строите, огромен, то можно рассмотреть библиотеки DLL/shared-libraries. Даже если это так, я бы предложил построить ваше приложение в виде слоев, например: - Приложение -> GUI -> Платформа -> База -> Фундаментальный
Итак, некоторые библиотеки может иметь общий код для всех платформ. Только конкретные библиотеки, такие как «Платформа», могут быть обновлены для конкретных действий. Это облегчит вам жизнь.
IMHO опция DLL/shared-library жизнеспособна, когда вы создаете продукт, который действует как полное решение, а не просто приложение. В этом случае разные подсистемы используют общую логику одновременно в рамках вашей структуры продукта, логика которой затем может быть разделена в памяти с использованием DLL/разделяемых библиотек.
НТНА,
Спасибо за ответ. Это продукт с открытым исходным кодом. Я не требую слишком большой обратной совместимости. –