LINUX.ORG.RU

Как создать проект и закрыть код при последующей установке. Что бы кроме деассемблера не прочесть.


0

2

Пытаясь разобраться в установке ПО на Linux, часто видел, что нужно компилировать исходники. Читал статьи, в которых написано, что под разные версии Linux придётся перекомпилировать код. Но я не хочу оставлять свой код открытым. Надо что бы люди не могли прочитать исходники, кроме как деассемблером. Подскажите каким образом создать проект, что бы мои исходники оставались закрытыми? Или это невозможно?



Последнее исправление: Baysson (всего исправлений: 1)

Соберите статический бинарник.

AITap ★★★★★
()

Гугли статическую линковку

xorik ★★★★★
()

Название форума читал?

На финфак, проприетарщик!

Eddy_Em ☆☆☆☆☆
()

собирай под оффтопик-ос, а в линупсе запускай вайном

anonymous
()

таскай все нужные либы нужных версий с собой

lazyklimm ★★★★★
()

Найди любую проприетарную программу под Линукс и возьми с нее пример.

Unrar, например: http://www.rarlab.com/

Или игру какую-нибудь, там пример того, что делать, если много разных библиотек.

proud_anon ★★★★★
()
Ответ на: комментарий от whiiteliites

> А зачемтебе закрывать код?

Продавать за огромные деньги генто-хомячкам. Очевидно же.

rival ★★
()

Шаг 1. Лицензионная чистота.

Ты обязан внимательно изучить лицензии всех библиотек, которые используешь. На предмет того, разрешено ли тебе использовать эти библиотеки, не открывая код своего проприетарного говна. И если разрешено, то на каких условиях.

Сразу скажу, что использовать библиотеки, имеющие лицензию GPL, тебе запрещено.

Шаг 2. Техническая возможность запуска.

Тебе нужно взять дистрибутив с древней-древней glibc. Собрать на нем свежий gcc. Дальше этим свежим gcc собрать все библиотеки, от которых зависит твоя быдлопроприетарщина.

Если лицензия на библиотеку позволяет тебе линковаться статически, лучше линкуйся с ней статически.

Если библиотека обязывает тебя линковаться динамически (например, по лицензии LGPL), то нужно линковаться динамически, и таскать so-файл с этой библиотекой вместе со своей быдлопроприетарщиной. Для этого нужно прописать в твоих elf-файлах rpath на директорию, куда ты инсталлируешь so-шки.

Результирующий бинарник (и комплект so-шек) должен работать на всех линуксах с такой же или более свежей glibc.

И так - для каждой архитектуры....

Шаг 3. Инсталляция.

Лучше не использовать кастомных инсталляторов, а использовать пакетный менеджер дистрибутива. В нулевом приближении, достаточно будет подготовить deb и rpm пакеты с твоим проприетарным говном. Не сри своими файлами куда ни попадя, аккуратно придерживайся http://www.pathname.com/fhs/

Ну и напоследок, тебе может быть полезна вот эта ссылка: http://www.linuxfoundation.org/collaborate/workgroups/lsb

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

PS. С самой glibc линковаться нужно динамически, но с собой ее таскать противопоказано. Нужно использовать ту, которая развернута на компьютере пользователя в составе дистрибутива.

Manhunt ★★★★★
()

А что такое арт-аналатик, это что так теперь называют себя пропиетарщики ?)

pylin ★★★★★
()
Ответ на: комментарий от Manhunt

PPS На сборочном дистрибутиве не должно быть развернуто никаких devel-пакетов, кроме gcc. Дистрибутивный gcc нужно снести сразу после того, как соберешь свежую версию gcc. В противном случае проморгаешь добрую половину зависимостей своих..

Manhunt ★★★★★
()

Алсо, могу порекомендовать человека, который за хорошие деньги проделает всю эту работу за тебя. Sylvia

Manhunt ★★★★★
()

неправильный вопрос у тебя

создание бинарника (если туда невключать дебуг информацию) - то и делает - там нельзя прочитать исходники

и так и распрастранять

ae1234 ★★
()

> Надо что бы люди не могли прочитать исходники

а ты их никому не давай. для верности распечатай и съешь.

Rastafarra ★★★★
()

просто собери свой софт в пакеты для всех дистрибутивов и всех архитектур. 26 архитектур * 10 основных дистрибутивов = всего 260 различных сборок. собери, протестируй, положи на сайт проекта. исходники можешь держать на домашнем/рабочем компе.

exception13 ★★★★★
()
Ответ на: комментарий от whiiteliites

>А зачемтебе закрывать код?
Видимо ему просто стыдно такое показывать.

unikoid ★★★
()

Собирай так, чтобы у всех работало: берешь CentOS, собираешь на ней, пакуешь все зависимости, как ldd показывает, потом делаешь инсталлятор InstallJammer'ом => PROFIT

annulen ★★★★★
()
Ответ на: комментарий от Manhunt

>>Сколько разных сборок у Adobe Reader или у Opera?

ну ты сравнил какие то там Adobe и Opera с широтой полета мысли ТС

exception13 ★★★★★
()
Ответ на: комментарий от annulen

> делаешь инсталлятор InstallJammer

Если действительно _инсталлятор_, а не пакет, то за такую кривизну яйца отрывать надо.

Manhunt ★★★★★
()

Распространяй статически слинкованный бинарник (лучше в rpm и deb) и набор объектных файлов для тех, кто хочет динамической линковки.

Zenom ★★★
()

Достаточно собрать репозитории для каждого дитрибутива. И да, проверь лицензии используемых библиотек.

vurdalak ★★★★★
()
Ответ на: комментарий от Manhunt

>Если действительно _инсталлятор_, а не пакет, то за такую кривизну яйца отрывать надо.

Это не кривизна, а удобство для пользователя и невмешательство в систему

annulen ★★★★★
()
Ответ на: комментарий от Manhunt

>ldd не покажет, что подгружается «на лету»

То, что dlopen грузит, конечно не покажет, но об этом автор должен знать. Ну и потестить неужно, естественно

annulen ★★★★★
()
Ответ на: комментарий от annulen

annulen> Это гемор. Один раз собрать проще

Проще вообще не собирать, а выложить исходник. Но если ЧСВ не дает это сделать, то лучше сделать репозиторий.

vurdalak ★★★★★
()
Ответ на: комментарий от Manhunt

>Для этого нужно прописать в твоих elf-файлах rpath на директорию, куда ты инсталлируешь so-шки.

Ну вот зачем х**ню советуешь? С rpath ничего путно не выйдет, с ORIGIN лучше не связываться. Правильный способ - LD_LIBRARY_PATH в стартовом скрипте

annulen ★★★★★
()
Ответ на: комментарий от vurdalak

>Проще вообще не собирать, а выложить исходник.

Если программа сложная, с кучей зависимостей, часто обновляется и расчитана не на кодеров, то выкладывание сорсов - это неуважение к юзерам

annulen ★★★★★
()
Ответ на: комментарий от Manhunt

>В нулевом приближении, достаточно будет подготовить deb и rpm пакеты с твоим проприетарным говном.

И благополучно засрать систему своими версиями библиотек. Отличный вариант!

А от рпмки, ставящей кучу всего в /opt проку мало

annulen ★★★★★
()
Ответ на: комментарий от annulen

>> Если действительно _инсталлятор_, а не пакет, то за такую кривизну яйца отрывать надо.

Это не кривизна, а удобство для пользователя и невмешательство в систему


Устанавливать ПО под линуксом принято через пакетный менеджер. Делать в обход менеджера - это все равно, что под виндой не показывать себя в «установленных программах». Примерно такого же характера будет «удобство и невмешательство».

Manhunt ★★★★★
()
Ответ на: комментарий от annulen

> И благополучно засрать систему своими версиями библиотек. Отличный вариант! А от рпмки, ставящей кучу всего в /opt проку мало

Как раз в /opt и надо выкладывать свое барахло. Почему это вдруг «проку мало»?

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

>Это почему вдруг?

Потому что придется хардкодить путь. Значит юзер без прав рута не сможет поставить программу в свой хоум

annulen ★★★★★
()
Ответ на: комментарий от Manhunt

>Устанавливать ПО под линуксом принято через пакетный менеджер. Делать в обход менеджера - это все равно, что под виндой не показывать себя в «установленных программах».

Если программу можно удалить, просто уничтожив ее устанавочный каталог, и в системе не останется мусора, проку от этой фичи никакого, только базу данных пакетного менеджера зря засорять.

annulen ★★★★★
()
Ответ на: комментарий от Manhunt

>Тебе нужно взять дистрибутив с древней-древней glibc. Собрать на нем свежий gcc.

Я использую для этих целей CentOS 5 с glibc 2.5 и gcc 4.4 из репов. Системные бибилотеки в основном беру из системы, а не пересобираю

annulen ★★★★★
()

>>Как создать проект и закрыть код при последующей установке. Что бы кроме деассемблера не прочесть.

Очень просто, для этого достаточно родиться мудаком.

mclaudt
()
Ответ на: комментарий от annulen

> Ты там выше про fhs распинался

В fhs явно упоминается /opt/<provider>/lib.

Manhunt ★★★★★
()
Ответ на: комментарий от annulen

> придется хардкодить путь.

Разумеется.

Значит юзер без прав рута не сможет поставить программу в свой хоум


Гораздо больше напрягает, что администратор с правами рута не сможет нормально развернуть твой пакет для всех юзеров. Да и не будет разворачивать, потому что левый инсталлятор превращает систему в помойку.

Manhunt ★★★★★
()
Ответ на: комментарий от annulen

annulen> Если программа сложная, с кучей зависимостей, часто обновляется и расчитана не на кодеров, то выкладывание сорсов - это неуважение к юзерам

Для этого есть мейнтейнеры дистрибутивов, которые за тебя соберут и сделают пакет.

vurdalak ★★★★★
()
Ответ на: комментарий от annulen

> Я использую для этих целей CentOS 5 с glibc 2.5 и gcc 4.4 из репов. Системные бибилотеки в основном беру из системы, а не пересобираю

Неужели они с тех пор не успели сломать c++ abi? И еще пересборка библиотек нужна, чтобы выкинуть из либ GPL-зависимости.

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

> выкинуть из либ GPL-зависимости.

Опциональные, разумеется.

Manhunt ★★★★★
()

> Или это невозможно?

Да, невозможно. Запрещаю тебе делать так.

one_more_hokum ★★★
()

Сударь, вы получаете премию за лучший троллинг выходного дня.

anonymous
()
Ответ на: комментарий от Manhunt

>Гораздо больше напрягает, что администратор с правами рута не сможет нормально развернуть твой пакет для всех юзеров. Да и не будет разворачивать, потому что левый инсталлятор превращает систему в помойку.

Да ладно! Все инсталляторы игр, что я видел при запуске из-под рута предлагают установить в /opt, а из-под юзера в ~. Ну и update-desktop-menu, который при запуске из-под рута прописывает в системное меню, для всех пользователей, а при запуске из-под пользователя для пользователя.

Yareg ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.