1934 / 1249 / 124
Регистрация: 04.01.2010
Сообщений: 4,504
1

Создание набора файлов проекта для запуска приложения

22.04.2016, 09:50. Показов 1275. Ответов 15

Доброго дня!

Использую для одного из своих проектов набор утилит srecord, на локальной машине все прекрасно работает, устанавливается и т.д., независимо от ОСи. Но сложность возникает в создании "portable" версии одной из необходимых утилит. Если в Windows компиляция дает возможность пользоваться утилитой автономно, то есть отдельным exe-шником, то компилированный файл линукса во-первых (насколько я понял) ориентирован на свою платформу - будь то debian, fedora или другая, во-вторых, не может работать без "установки" всего набора необходимых библиотек из архива или репозитория.

Соответственно, вопрос - как сделать "автономный" набор библиотек, чтобы можно было распаковать его на любой Linux-машине (будем говорить - хотя бы о RedHat, хотя в идеале было бы здорово иметь некий универсальный вариант) и запустить? Я пытался с помощью выделения зависимостей просто стянуть скомпилированные библиотеки с репозитория и расположить их со скомпилированным запускаемым файлом. Но после 10го или 12го файла библиотеки уже отчаялся - зависимости представляют собой дерево, что заметно усложнило процесс сбора библиотек, и соответственно, очевидность положительного результата.

ЗЫ: в java есть например, возможность запихивать все необходимые библиотеки в один jar-архив, чтобы не качать их по отдельности. В винде все понятно - компилировать можно с библиотеками и без. В Python'е для этого есть специальные утилитки, по крайней мере под Винды. А как с этим работать в Линуксе?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2016, 09:50
Ответы с готовыми решениями:

Создание приложения для запуска .exe файлов
Нужно создать приложение, где будут отображаться например картинки, или кнопки, при нажатии на...

Создание файла для запуска приложения
Добрый день! У меня такая проблема. Написал я для себя небольшое приложение. Запускаю его в идее...

Создание проекта в cmake для с и с++ файлов
Доброго времени суток. Есть вопрос. У меня с++ проект собирается с помощью cmake. Возникла...

Создание библиотеки и приложения для чтения файлов djvu .NET
Собственно вопрос: С чего начать? Интересует полная разработка собственного приложения с нуля...

15
Модератор
Эксперт NIX
2787 / 2032 / 680
Регистрация: 02.03.2015
Сообщений: 6,509
22.04.2016, 12:00 2
В Линуксе есть специальный формат пакетов (.deb для Debian-подобных, .rpm для Red Hat). В новой версии Ubuntu презентован так называемый 'snap'-формат.
Ну и никто не отменял стандартных исходников собираемых в С-формате.
1
1934 / 1249 / 124
Регистрация: 04.01.2010
Сообщений: 4,504
22.04.2016, 12:20  [ТС] 3
Цитата Сообщение от Marinero Посмотреть сообщение
В Линуксе есть специальный формат пакетов (.deb для Debian-подобных, .rpm для Red Hat). В новой версии Ubuntu презентован так называемый 'snap'-формат.
Ну и никто не отменял стандартных исходников собираемых в С-формате.
C-формат требует установки дополнительных каких-то утилит, которые не установлены на сервере (turbo-boost или
как-то так). То есть скомпилить без этих утилит не получится.

.rpm есть готовые, но не под нужную redhat. Есть под rl6, а мне нужно под rl5.

Похоже, "мультиплатформенность" - это непозволительная роскошь при определенных условиях. О которой надо либо забыть, либо танцевать с бубном, чтобы это заработало... Печально (.
0
918 / 635 / 198
Регистрация: 08.09.2013
Сообщений: 1,690
22.04.2016, 12:42 4
Цитата Сообщение от Voland_ Посмотреть сообщение
Похоже, "мультиплатформенность" - это непозволительная роскошь при определенных условиях. О которой надо либо забыть, либо танцевать с бубном, чтобы это заработало... Печально (.
Да не настолько всё печально :-).
Два общепринятых способа вам подсказали.

1. (Кошерный способ) Собитаете пакеты под интересующие вас дистрибутивы. Зависимости будут доставляться автоматически.
2. Тоже кошерный. Собитаете из исходников на каждой платформе.

Кроме этого
3. (Хочу как в венде, распростанять бинарник, собрав "зоопарк" бислиотек). Собираете в RHEL 5 (если целевые платформы достаточно новые, то можно и в RHEL 6). Вместе с собранными утилитами запаковываете в пакет (rpm или deb) использовавшиеся для сборки экзотические библиотеки (основные, скорее всего, на целевой платформе уже установлены).
4. (Хочу как в венде, одним исполняемым файлом, дублируя одни и те же библиотеки во все утилиты). Комилируете статически (тоже рекометдуется FREL 5 в качестве среды сборки) и распространяете бинарники.
1
Модератор
Эксперт NIX
2787 / 2032 / 680
Регистрация: 02.03.2015
Сообщений: 6,509
22.04.2016, 12:44 5
Ну в каждом таком пакете(rpm и deb) априори идут зависимости, которые обычно должны автоматически «разрешаться» (доустанавливаться).
В сборке «из исходников» присутствует проверка наличия необходимых приложений/библиотек в системе, которые, в случае необходимости, доустанавливают уже вручную.
Кроме того (наверное Ваш вариант) имеется вариант установки «полного комплекта» (обычно в директорию /opt системы) (аналог «portable»-программ в windows). Например подобным образом устанавливаются большинство веб-приложений(Skype, Viber, Telegram, Google-Chrome …)
1
918 / 635 / 198
Регистрация: 08.09.2013
Сообщений: 1,690
22.04.2016, 12:54 6
Voland_, PS. Забыл самый модный способ.
6. Распространяете в виде docker-контейнера.
0
1934 / 1249 / 124
Регистрация: 04.01.2010
Сообщений: 4,504
22.04.2016, 13:01  [ТС] 7
Буду изучать, спасибо за рекомендации.
RPM-вариант от rl6 на rl5 не работает. Не находит какие-то библиотеки. Вариант с компиляцией пока не опробован, еще предстоит. Для меня сложность еще в том, что под рукой нет redhat-окружения, в котором бы я имел админские права и мог попробовать. То что раньше получалось - это требование админских прав для распаковки RPM и отсутствие возможности собрать проект на машине. А те кто имеет админские права - не желают ставить приложение "не из пакета". Но и переход серверов на rl6 предполагается через месяц . То есть программа заработает через месяц.

Добавлено через 46 секунд
Цитата Сообщение от gng Посмотреть сообщение
6. Распространяете в виде docker-контейнера.
это будет здорово тогда, когда прога хоть как-нить запустится на сервере. А я не могу этого достичь пока что.
0
Модератор
Эксперт NIX
2787 / 2032 / 680
Регистрация: 02.03.2015
Сообщений: 6,509
22.04.2016, 13:44 8
Цитата Сообщение от Voland_ Посмотреть сообщение
в котором бы я имел админские права
ИМХО «всунуть» что-либо в систему без прав практически невозможно…
0
1934 / 1249 / 124
Регистрация: 04.01.2010
Сообщений: 4,504
22.04.2016, 14:32  [ТС] 9
Цитата Сообщение от Marinero Посмотреть сообщение
«всунуть»
да мне вроде бы и не требуется это. Мне бы запустить софт, который должен был бы обеспечить мне то, что я хочу. На любой машине. А выходит, что "не все дистрибутивы одинаково полезны". Пока задача не такая уж серьезная - задумался написать все на java или python. Благо - этих окружений предостаточно на все ядра, ОСи и платформы.
0
918 / 635 / 198
Регистрация: 08.09.2013
Сообщений: 1,690
22.04.2016, 16:30 10
Цитата Сообщение от Voland_ Посмотреть сообщение
RPM-вариант от rl6 на rl5 не работает.
Приведенные вами утилиты требуют кроме стандартных либ, которые есть везде, только
libgcrypt и libgpg-error, которые есть почти везде. Для сборки еще требует boost, но собранные утилиты от него не зависят.
Собранные на centos 5 утилиты у меня запустились на centos 6, centos 7, debian wheezy, debian jessie, только на последнем утилиты требовали библиотеку libgcrypt более статой версии, нежели установлена в системе. Дебиан , в отличие от РедХэт поддерживает lsb без особого энтузиазма.
Бинарники переносил и запускал от обычного пользователя.
1
1934 / 1249 / 124
Регистрация: 04.01.2010
Сообщений: 4,504
22.04.2016, 16:37  [ТС] 11
gng, я мало что полезного выделил из вашего поста. Вы можете поделиться набором файлов, который запускали? Потому что я скачивал libcrypt и libgpg-error - они потянули (потребовали) еще несколько билиотек, которые в свою очередь потянули еще... может я что-то не так делал?

Давайте я попробую ваш скомпиленый вариант на redhat?
0
918 / 635 / 198
Регистрация: 08.09.2013
Сообщений: 1,690
22.04.2016, 16:52 12
Лучший ответ Сообщение было отмечено Marinero как решение

Решение

Цитата Сообщение от Voland_ Посмотреть сообщение
Вы можете поделиться набором файлов, который запускали?
srec_cat srec_cmp srec_info
Цитата Сообщение от Voland_ Посмотреть сообщение
Потому что я скачивал libcrypt и libgpg-error - они потянули (потребовали) еще несколько билиотек,
Трудно представить систему, включая виртуалки и контейнеры, где этих библиотек нету. Поэтому и скачивать ничего не нужно.
Цитата Сообщение от Voland_ Посмотреть сообщение
Давайте я попробую ваш скомпиленый вариант на redhat?
Вложил
Вложения
Тип файла: 7z srec.7z (1.25 Мб, 3 просмотров)
0
1934 / 1249 / 124
Регистрация: 04.01.2010
Сообщений: 4,504
22.04.2016, 17:12  [ТС] 13
gng, спасибо Вам, добрый человек! Я так и не понял как именно вы сбилдили эти файлы, но это работает на RedHat. Со временем попробую и на ubuntu.
0
1934 / 1249 / 124
Регистрация: 04.01.2010
Сообщений: 4,504
25.04.2016, 15:13  [ТС] 14
gng, а на Ubuntu 14 прога ответила, что "Exec format error"...
PS: но запуск ее на Ubuntu и не требуется - нужно только определить в makefile, существует ли srec_cat в окружении и пытаться запустить локальный srec_cat, если он не был установлен ранее... Вот, пытаюсь составить такое условие в скрипте Makefile...
0
918 / 635 / 198
Регистрация: 08.09.2013
Сообщений: 1,690
25.04.2016, 18:53 15
Цитата Сообщение от Voland_ Посмотреть сообщение
Exec format error"
Вы его не на 32-бит системе пробуете запустить? Компилировалось под 64.
1
1934 / 1249 / 124
Регистрация: 04.01.2010
Сообщений: 4,504
26.04.2016, 09:01  [ТС] 16
Цитата Сообщение от gng Посмотреть сообщение
Вы его не на 32-бит системе пробуете запустить? Компилировалось под 64.
Вы правы. Доедаю свою шляпу. По всей видимости причина в этом.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2016, 09:01

Создание .mp4 видео из набора .ppm файлов
Здравствуйте, возникло задание, из набора фреймов формата .ppm склеить видео .mp4. ffmpeg через...

Создание проекта консольного приложения
Проблема вот такая, не могу создать проэкт Консольное приложение win32. Появляется пустое окно и...

Изменение набора данных DataSet проекта для вывода в ReportViewer
Ни когда не было задачи печати отчетов... Прошу помощи в программном заполнение набора данных для...

Сборка проекта для запуска на другом PC
Написал программу мульти-постинга вк для подруги она не бум бум в программирование. Нужно собрать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.