создание дистрибутива программы под linux
, какие-нибудь подводные камни (с) ?Динамическое линкование, лоадер, архитектура (x86,x86_64,arm)
Чтобы сделать самораспоковывающийся архив - посмотри на тулзу makeself.
еще возможны проблемы с разными менеджерами памяти в либах и проге в случае динамического связывания (хотя тут я не уверен).
*хинт: у меня про это сообщает сам компилер
1. установка программы должна состоять из запуска следующих команд:
./configure
./make
./make install
2. программа должна по умолчанию ставиться в /usr/local
современные правила хорошего тона подразумевают распространение программы в deb или rpm пакетах.
вменяемых исходных текстов. А уж пользователь сам решит, где ему
поставить галочку, определяющую, в каком виде собирать двоичные
пакеты.
---
"This user is BSD-compliant."
собственно я не хотел исходный код прилагать, поэтому и рассматривал вариант распространения скомпилированной программы.
да, я как раз и думал об этом. указать зависимость от определенной версии glibc в пакете похоже будет ок.
под различием динамической линковки ты имеешь в виду что что одна и та же программа при вызове dlopen\dlsym\dlclose может сработать по разному на разных системах?
upd.
кстати, а разве лоадер и система динамической линковки не являются частью кернела?
---
"Верь сводке погоды, но доверяй --- интуиции.
Будь особенно бдителен, когда всё хорошо и нет поводов для тревоги."
Или ты предлагаешь человеку собирать под все возможные дистрибутивы самому?
указать зависимость от определенной версии glibc в пакете похоже будет ок.все пользователи других версий glibc скажут тебе спасибо
для остальных - давать сорцы или скомпиленные бинари, хотя в принципе тот же deb или rpm можно открыть как архив, посмотреть скрипты, распаковать куда надо и настроить руками.
На линуксах это не входит даже в функциональность libc,
этим заведуют отдельная библиотека и отдельная программа.
---
"Прогресс науки обратно пропорционален числу выходящих журналов."
современные правила хорошего тона подразумевают распространение программы в deb или rpm пакетах.первый камент по делу, и за что-то заминусовали.
Конечно же, програ должна поставляться в пакетах под разные системы + исходники tar.gz, которые собираются либо cmake/make, либо устаревшим вариантом configure/make
Конечно же, програ должна поставляться в пакетах под разные системыничего она не должна. Исходники, README и самораспаоквывающийся архив c бинарём в типичной конфигурации. А добавлять поддержку "всех систем" должны адепты этих систем.
да это все гентушники, я ж забыл ebuild указать как вариант
Тем не менее авторы софта могут делать пакеты и под "все системы".
glibc разве не с оратной совместимостью?
я совсем не на "ты" с линуксом
что значит различные конфигурации дистрибутива линукса? различный набор установленных компонент?
так, попробую с концептуальных вопросов типа "как _должна_ распространятся программа" вернуться вниз
допустим есть простая программа
#include "stdio.h"
int main
{
printf("Hello, world!\n");
return 0;
}
скомпилил ее gcc какой-то версии, пусть 4.0
насколько я понял выполнение конкретно этой программы зависит от рантайма - glibc
1) пусть конечная система один в один, но glibc отличается. правильно я понимаю что если версия glibc меньше чем системы на которой компилировалось, то программа не запустится. а если больше - то все ок.
2) совершенно произвольный линукс (для упрощения обе машины - 32битные). почему скомпиленная мной программа может не запустится на этой машине?
Другое дело, не понятно, зачем тебе распространять программу в бинариках?
Очевидно, чтобы не предоставлять свои исходники всем. Не все проги являются OpenSource, бывают free, и даже платные.
Если скомпилишь/слинкуешь статически, то запустится везде.Неа, можно нарваться на "слишком старое ядро" даже в пределах 2.6.*.
Ну, тогда такая софтина под линукс обречена на успех!
skype, teamviewer, heroes of newerth, вообще любая проприетарная программа, которая не только под винды но и под линукс. я считаю что пусть будет лучше уж так, чем версия только под винду.
Если у ТС столь же замечательный проект, то я только приветствую.
Организовать набор библиотек определённой версии специально для
одной программы в операционных системах куда меньшая проблема,
чем определение, что же именно они там сломали, что их программа
работает только на ядрах определённого сорта.
---
...Я работаю антинаучным аферистом...
у меня падает ясно где - когда выбираю транслировать кусочек экрана и растягиваю область трансляции за предел рабочего стола или впритык к краю. других падений не замечал.
типа нелинуксовый не падает или если падает, то сразу понятно где?
skype, teamviewer, heroes of newerth, вообще любая проприетарная программа, которая не только под винды но и под линукс. я считаю что пусть будет лучше уж так, чем версия только под винду.поставил плюс, но в отношении некоторых из них (скайп особенно) лучше б вообще никакой версии не было
Оставить комментарий
serge18
хочу создать дистрибутив своей тулзы под линукс. то есть чтобы пользователь скачал архив, распаковал, запустил INSTALL и радовался жизни. простейший INSTALL подразумевает копирование программы в папку пользователя, добавление ссылки куданибудь в /usr/bin, копирование so в /opt/lib/до этого я программировал только под debian для себя и был счастлив, поэтому появились соответствующий вопрос:
в чем принципиальные отличия между различными дистрибутивами линукса со стороны программиста, какие-нибудь подводные камни (с) ? кроме версии ядра =) т.е. наверняка возможно без особого труда скомпилировать из под дебиана программу для убунты.