|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
Создание набора файлов проекта для запуска приложения22.04.2016, 09:50. Показов 1772. Ответов 15
Доброго дня!
Использую для одного из своих проектов набор утилит srecord, на локальной машине все прекрасно работает, устанавливается и т.д., независимо от ОСи. Но сложность возникает в создании "portable" версии одной из необходимых утилит. Если в Windows компиляция дает возможность пользоваться утилитой автономно, то есть отдельным exe-шником, то компилированный файл линукса во-первых (насколько я понял) ориентирован на свою платформу - будь то debian, fedora или другая, во-вторых, не может работать без "установки" всего набора необходимых библиотек из архива или репозитория. Соответственно, вопрос - как сделать "автономный" набор библиотек, чтобы можно было распаковать его на любой Linux-машине (будем говорить - хотя бы о RedHat, хотя в идеале было бы здорово иметь некий универсальный вариант) и запустить? Я пытался с помощью выделения зависимостей просто стянуть скомпилированные библиотеки с репозитория и расположить их со скомпилированным запускаемым файлом. Но после 10го или 12го файла библиотеки уже отчаялся - зависимости представляют собой дерево, что заметно усложнило процесс сбора библиотек, и соответственно, очевидность положительного результата. ЗЫ: в java есть например, возможность запихивать все необходимые библиотеки в один jar-архив, чтобы не качать их по отдельности. В винде все понятно - компилировать можно с библиотеками и без. В Python'е для этого есть специальные утилитки, по крайней мере под Винды. А как с этим работать в Линуксе?
0
|
|
| 22.04.2016, 09:50 | |
|
Ответы с готовыми решениями:
15
Создание файла для запуска приложения Создание проекта в cmake для с и с++ файлов |
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
|
| 22.04.2016, 12:00 | |
|
В Линуксе есть специальный формат пакетов (.deb для Debian-подобных, .rpm для Red Hat). В новой версии Ubuntu презентован так называемый 'snap'-формат.
Ну и никто не отменял стандартных исходников собираемых в С-формате.
1
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 22.04.2016, 12:20 [ТС] | ||
|
как-то так). То есть скомпилить без этих утилит не получится. .rpm есть готовые, но не под нужную redhat. Есть под rl6, а мне нужно под rl5. Похоже, "мультиплатформенность" - это непозволительная роскошь при определенных условиях. О которой надо либо забыть, либо танцевать с бубном, чтобы это заработало... Печально (.
0
|
||
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||
| 22.04.2016, 12:42 | ||
|
Два общепринятых способа вам подсказали. 1. (Кошерный способ) Собитаете пакеты под интересующие вас дистрибутивы. Зависимости будут доставляться автоматически. 2. Тоже кошерный. Собитаете из исходников на каждой платформе. Кроме этого 3. (Хочу как в венде, распростанять бинарник, собрав "зоопарк" бислиотек). Собираете в RHEL 5 (если целевые платформы достаточно новые, то можно и в RHEL 6). Вместе с собранными утилитами запаковываете в пакет (rpm или deb) использовавшиеся для сборки экзотические библиотеки (основные, скорее всего, на целевой платформе уже установлены). 4. (Хочу как в венде, одним исполняемым файлом, дублируя одни и те же библиотеки во все утилиты). Комилируете статически (тоже рекометдуется FREL 5 в качестве среды сборки) и распространяете бинарники.
1
|
||
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
|
| 22.04.2016, 12:44 | |
|
Ну в каждом таком пакете(rpm и deb) априори идут зависимости, которые обычно должны автоматически «разрешаться» (доустанавливаться).
В сборке «из исходников» присутствует проверка наличия необходимых приложений/библиотек в системе, которые, в случае необходимости, доустанавливают уже вручную. Кроме того (наверное Ваш вариант) имеется вариант установки «полного комплекта» (обычно в директорию /opt системы) (аналог «portable»-программ в windows). Например подобным образом устанавливаются большинство веб-приложений(Skype, Viber, Telegram, Google-Chrome …)
1
|
|
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
|
| 22.04.2016, 12:54 | |
|
Voland_, PS. Забыл самый модный способ.
6. Распространяете в виде docker-контейнера.
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 22.04.2016, 13:01 [ТС] | ||
|
Буду изучать, спасибо за рекомендации.
RPM-вариант от rl6 на rl5 не работает. Не находит какие-то библиотеки. Вариант с компиляцией пока не опробован, еще предстоит. Для меня сложность еще в том, что под рукой нет redhat-окружения, в котором бы я имел админские права и мог попробовать. То что раньше получалось - это требование админских прав для распаковки RPM и отсутствие возможности собрать проект на машине. А те кто имеет админские права - не желают ставить приложение "не из пакета". Но и переход серверов на rl6 предполагается через месяц . То есть программа заработает через месяц.Добавлено через 46 секунд
0
|
||
|
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
|
|
| 22.04.2016, 13:44 | |
|
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 22.04.2016, 14:32 [ТС] | ||
|
0
|
||
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||
| 22.04.2016, 16:30 | ||
|
libgcrypt и libgpg-error, которые есть почти везде. Для сборки еще требует boost, но собранные утилиты от него не зависят. Собранные на centos 5 утилиты у меня запустились на centos 6, centos 7, debian wheezy, debian jessie, только на последнем утилиты требовали библиотеку libgcrypt более статой версии, нежели установлена в системе. Дебиан , в отличие от РедХэт поддерживает lsb без особого энтузиазма. Бинарники переносил и запускал от обычного пользователя.
1
|
||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 22.04.2016, 16:37 [ТС] | |
|
gng, я мало что полезного выделил из вашего поста. Вы можете поделиться набором файлов, который запускали? Потому что я скачивал libcrypt и libgpg-error - они потянули (потребовали) еще несколько билиотек, которые в свою очередь потянули еще... может я что-то не так делал?
Давайте я попробую ваш скомпиленый вариант на redhat?
0
|
|
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||||
| 22.04.2016, 16:52 | ||||
Сообщение было отмечено Marinero как решение
Решение
0
|
||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 22.04.2016, 17:12 [ТС] | |
|
gng, спасибо Вам, добрый человек! Я так и не понял как именно вы сбилдили эти файлы, но это работает на RedHat. Со временем попробую и на ubuntu.
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 25.04.2016, 15:13 [ТС] | |
|
gng, а на Ubuntu 14 прога ответила, что "Exec format error"...
PS: но запуск ее на Ubuntu и не требуется - нужно только определить в makefile, существует ли srec_cat в окружении и пытаться запустить локальный srec_cat, если он не был установлен ранее... Вот, пытаюсь составить такое условие в скрипте Makefile...
0
|
|
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
|
| 25.04.2016, 18:53 | |
|
1
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 26.04.2016, 09:01 [ТС] | |
|
0
|
|
| 26.04.2016, 09:01 | |
|
Помогаю со студенческими работами здесь
16
Создание библиотеки и приложения для чтения файлов djvu .NET Создание .mp4 видео из набора .ppm файлов Создание проекта консольного приложения Изменение набора данных DataSet проекта для вывода в ReportViewer Сборка проекта для запуска на другом PC Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|