Поскольку мы просто не там все же. Вы, возможно, столь же легко спросили, "почему я должен все еще записать программы..., почему я не могу только питаться в документе требований и иметь компьютер, пишут приложение для меня?"
Разработчики компилятора проводят время на небольших вещах, потому что те - типы вещей, которые прикладные программисты склонны пропускать.
кроме того, они не могут принять слишком много (возможно, Ваш цикл, некоторое гетто было задержкой или чем-то)?
Вам следует взглянуть на Linux Standard Base . Он разработан специально, чтобы помочь людям в вашем положении. Он определяет среду, на которую могут положиться сторонние разработчики приложений - так что есть установленная версия libc и других библиотек, а некоторые программы и каталоги находятся в известных местах. Все основные дистрибутивы Linux поддерживают LSB.
Тем не менее, вам все равно, вероятно, следует упаковать результат специально для каждого основного дистрибутива - просто чтобы ваши клиенты могли управлять вашим приложением с помощью своих знакомых инструментов управления пакетами.
В принципе, есть два способа. Вы можете выбрать оба, если хотите.
Первый способ - это обычный способ, которым делают игры и подобные. Создайте подкаталог lib /, используйте LD_LIBARY_PATH
и включите почти все необходимые вам разделяемые библиотеки. Это гарантирует безболезненное взаимодействие с пользователем, но увеличивает размер установщика и, вероятно, увеличивает объем памяти. Я бы даже не стал пытаться повторно использовать уже существующие библиотеки, поскольку они имеют тенденцию исчезать по мере обновления системы.
Второй способ - предоставить пакеты распространения. Их, как правило, не так уж и сложно сделать, а затем они прекрасно интегрируются с дистрибутивами и, кроме того, будут казаться более привлекательными для ваших клиентов. Два недостатка: вам нужно будет сделать это для каждого дистрибутива (Debian, Ubuntu, SuSE, redhat, вероятно, хорошее начало), и вам нужно будет поддерживать их: со временем некоторые библиотеки будут недоступны в конкретной версии, и, таким образом, у пользователя возникнут проблемы с зависимостями.
В программе установки проверьте, какие библиотеки установлены, а затем загрузите двоичные файлы для тех, которые не установлены.
Для дополнительного удобства ваших пользователей, если нет подключения к Интернету, попросите установщик сгенерировать ключ, который вы можете ввести на своем веб-сайте, чтобы получить ZIP-архив, который затем можно передать установщику.
Для максимального удобства проверьте, какие библиотеки доступны в целевом дистрибутиве, и попросите пользователя использовать стандартный инструмент администратора для их установки. Таким образом, вы не будете загрязнять компьютер разными версиями одной и той же библиотеки.
Тем не менее: может быть разумнее поместить ваш ценный код в библиотеку ссылок, а затем предоставить это как двоичный blob в исходном пакете. Сюда, ваш код защищен так же, как и в чистом двоичном коде, и пользователи могут скомпилировать связующий код в своей любимой системе, не беспокоясь о вещах.
Я имею в виду: сколько стоит часть вашего кода, которая устанавливает пользовательский интерфейс? Сколько вы потеряете, если это украдут?