powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Мультиплатформенный "пускач" приложения
22 сообщений из 22, страница 1 из 1
Мультиплатформенный "пускач" приложения
    #36441813
dotman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Необходимо написать native "запускалку" приложения для нескольких платформ (Win, Win64, Linux, Linux64, MaсOS X, возможно FreeBSD)

Сама суть работы очень простая - уметь скачать файл по http:// и запустить его. Никаких GUI, баз данных и т.д.

Что хотелось бы:
1) Одни исходники для всех платформ
2) Кросс-компиляция исходника с одной платформы для всех целевых (работаю в Linux, хотелось бы "нажать на кнопку" и получить сразу кучу исполняемых файлов, по-одному для каждой целевой платформы)

Вопрос: на чем можно быстро и просто написать такое приложение?
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36441918
dotman,

ИМХО,
1. Java... Один раз скомпилировал - работает везде, где есть Java-машина...
2. JavaScript... Запускать из браузера; только надо следить, чтобы не было отключено исполнение сценариев...
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36441966
dotman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Станислав С...кий,

Извините, так и думал что надо выделить ключевое слово в моем первом посте:

Код: plaintext
Необходимо написать  native  "запускалку" приложения для нескольких платформ
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36442093
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я на FreePascale реально создал кроссплатформенное приложение (правда, консольное). Это был редактор DBF файлов, одинаково работал в командной строке WinXP и в консоли Linux Mandriva. Если у него имеется возможность доступа к Инету, то я бы попробовал на этом ЯП.
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36442125
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dotman,

wget ?
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36442330
dotman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftwget ?

Рассматривал возможность написать тупо по shell-скрипту для каждой платформы, но оставил это на крайний случай.
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36442342
dotman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VowkЯ на FreePascale реально создал кроссплатформенное приложение (правда, консольное). Это был редактор DBF файлов, одинаково работал в командной строке WinXP и в консоли Linux Mandriva. Если у него имеется возможность доступа к Инету, то я бы попробовал на этом ЯП.

А компиляция как происходила? На одной платформе сразу для нескольких целевых или в Windows делали *.exe, в Linux - elf?
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36442348
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dotmanmiksoftwget ?Рассматривал возможность написать тупо по shell-скрипту для каждой платформы, но оставил это на крайний случай.Да там скрипта того - три строчки. Кстати, есть шанс сделать его кроссплатформенным.
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36442369
dotman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftКстати, есть шанс сделать его кроссплатформенным.
Каким образом?
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36442407
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dotmanmiksoftКстати, есть шанс сделать его кроссплатформенным.
Каким образом?Кстати наврал, четыре строчки. Что-то типа того:
Код: plaintext
1.
2.
3.
#!/bin/bash
wget нужные_ключи http://site.ru/start_my_application.exe
chmod +r ./start_my_application.exe
./start_my_application.exe
"Лишние" команды под windows просто ругнутся, что нет таких команд.

Моменты, которые нужно не упустить:
1) разные переносы строк (не помню, в какой из ОС играют роль, в какой нет).
2) имя скачиваемого файла может отличаться для разных ОС.
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36442816
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dotmanЧто хотелось бы:
1) Одни исходники для всех платформ
2) Кросс-компиляция исходника с одной платформы для всех целевых (работаю в Linux, хотелось бы "нажать на кнопку" и получить сразу кучу исполняемых файлов, по-одному для каждой целевой платформы)

Вопрос: на чем можно быстро и просто написать такое приложение?На С естественно :) Компилятор стандартный gcc.
Прийдется правда слегка повозится и поставить нужные platform-specific SDK (и возможно пересобрать сам gcc чтобы разрешить кросс-компиляцию). А так же надо будет следить чтобы не использовались уникальные для какой-либо из систем библиотеки. То есть либо самому писать сетевой протокол, либо использовать статическую линковку.
Зато потом просто gcc -mwindows, gcc -mglibc, gcc -mmacosx и так далее. Разница будет только в makefile
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36442847
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dotmanДобрый день.

Необходимо написать native "запускалку" приложения для нескольких платформ (Win, Win64, Linux, Linux64, MaсOS X, возможно FreeBSD)
Проблема в том, что нельзя гарантировать наличия компиллятора (особенно на Windows-платформах). А если ты будешь приаттачивать компиллятор для всех платформ, тогда постановка вырождается.
Возникает здравый вопрос "и причём тут crossplatform" ? Распространяй готовые бинарники и всё будет ОК.
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36442870
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dotman
А компиляция как происходила? На одной платформе сразу для нескольких целевых или в Windows делали *.exe, в Linux - elf?
Ставил в Windows вариант FreePascal для x86, а в Linux - свой вариант. Общими были иходные тексты программы, а компиляция в каждой системе своя.
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36443148
Фотография С0ВЕСТЬ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Html-страничкой ?


(;,;)
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36443169
Vowk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С0ВЕСТЬHtml-страничкой ?

Но это вроде как не native считаетсо.
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36443297
dotman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytondotmanДобрый день.

Необходимо написать native "запускалку" приложения для нескольких платформ (Win, Win64, Linux, Linux64, MaсOS X, возможно FreeBSD)
Проблема в том, что нельзя гарантировать наличия компиллятора

Вы как-то неправильно вопрос поняли. Я, грубо говоря, хочу распространять 10kb *.exe файл, который только и умеет что скачать другой файл с сервера по http:// и запустить его.
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36443306
dotman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl
На С естественно :) Компилятор стандартный gcc.
Прийдется правда слегка повозится и поставить нужные platform-specific SDK (и возможно пересобрать сам gcc чтобы разрешить кросс-компиляцию). А так же надо будет следить чтобы не использовались уникальные для какой-либо из систем библиотеки. То есть либо самому писать сетевой протокол, либо использовать статическую линковку.
Зато потом просто gcc -mwindows, gcc -mglibc, gcc -mmacosx и так далее. Разница будет только в makefile

Спасибо за наводку, пара вопросов (я в C сильно "не очень", извините если вопросы глупые):

автор"либо самому писать сетевой протокол"
Я правильно понимаю, что у меня код будет в виде
Код: plaintext
1.
2.
3.
4.
5.
{IFDEF Windows}
  // use windows *.dll
{END}
{IFDEF Linux}
  // use linux *.so
{END}

авторлибо использовать статическую линковку
Т.е. я могу использовать уникальные библиотеки для каждой платформы и статически "вшивать" конкретную либу в конкретный исполняемый файл для определенной платформы?
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36443365
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dotmanавтор"либо самому писать сетевой протокол"
Я правильно понимаю, что у меня код будет в видеНет, как раз в случае собственного протокола код будет один общий для всех. Работа с сокетами во всех операционках одинакова.


dotman
Код: plaintext
1.
2.
3.
4.
5.
6.
{IFDEF Windows}
  // use windows *.dll
{END}
{IFDEF Linux}
  // use linux *.so
{END}
Так тоже можно, но можно и проще: сделать собственные универсальные врапперы над системо-зависимыми библиотеками. Например делаешь "myftp.h" с заголовками:
Код: plaintext
1.
2.
int getFile(char *URL, char *localName);
int listDirectory(char *URL);
... etc
Потом делаешь несколько платформо-зависимых исходников, myftp_linux.c myftp_windows.c, myftp_someotheranimal.c. В каждом из которых делаешь реализацию всех функций из myftp.h
Потом при окончательной компиляции проекта подсовываешь линкеру один из платформо-зависимых файлов.
Получится примерно как класс с виртуальными функциями, но вручную.

dotmanавторлибо использовать статическую линковку
Т.е. я могу использовать уникальные библиотеки для каждой платформы и статически "вшивать" конкретную либу в конкретный исполняемый файл для определенной платформы?Нет, это будет как раз случай условной компиляции. Там уже не важно статическая или динамическая библиотека используется. Если она системо-зависимая, то условная компиляция и никаких гвоздей.

Под статической линковкой я подразумевал чью-нибудь чужую системо-независимую реализацию протокола. В смысле не ты сам возишься с сокетами а используешь чужую возню. Обычно такие библиотеки компилируются в dll/so, а можно их и статически прилинковать (если лицензия позволяет).
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36443756
dotman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,

Спасибо за ответы, буду пробовать.
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36445472
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И кстати, очень сильно советую не возится с кросс-компиляцией, а поставить себе несколько машин в реальном или виртуальном вариантах. Будет и намного проще и надежней компилировать и тестировать сможешь не отходя от кассы.
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36453583
dotman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного поковырялся, расскажу к чему пришел, может кому пригодится.

Практически сразу я понял, что компиляция на одной платформе сразу для всех - практически нереально.
Гораздо проще и удобнее компилировать на каждой поддерживаемой платформе свой бинарник отдельно.

Значит, задача стала выглядеть так: имеем одни исходники, которые компилируем на каждой платформе.
На практике - в VirtualBox установил Windows с FreeBSD и компилирую там. Что делать для MacOS X - пока не решил.

Реализация - написал на С++ приложение под Linux с использованием libcurl, отладил, заработало.
Для Windows скачал бесплатный Visual C++ Express, скачал исходники libcurl, собрал libcurl, после этого добавил windows-специфичный код через IFDEF, откомпилировал (без С++ спеца рядом - хер бы разобрался под Windows)

Вроде все хорошо, но гемморой для Windows немного напрягает.

На днях узнал про QtCreator который как я понял, содержит кросс-платформенные реализации различных библиотек, в том числе и для работы с HTTP. Планирую посмотреть QtCreator, если там все так радужно - перепишу.
Из плюсов - нет деления на код для разных платформ + одна среда (QtCreator) для всех платформ.

Впечатление в целом - я Java-программист, охреневаю как в C++ все непросто :-)
...
Рейтинг: 0 / 0
Мультиплатформенный "пускач" приложения
    #36453818
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dotmanДля Windows скачал бесплатный Visual C++ Express,Надо было скачивать MinGW. http://www.mingw.org/


dotmanНа днях узнал про QtCreator который как я понял, содержит кросс-платформенные реализации различных библиотек, в том числе и для работы с HTTP. Планирую посмотреть QtCreator, если там все так радужно - перепишу. QtCreator это всего-лишь один из редакторов нацеленных на работу с библиотекой Qt. Этот редактор пишется той же фирмой что и сама библиотека, так что на данное время он самый лучший для работы с Qt. Но говорить что QtCreator что-то там содержит это все равно что утверждать что NetBeans имеет кучу классов :)
А в остальном не соврали, Qt действительно очень крут и удобен для кроссплаторменных задач. Если конечно его (Qt) на эту платформу уже портировали. К сожалению не все ОС его уже имеют и не всегда там самая свежая или стабильная версия. Теже самые проблемы что и с Java...
http://qt.nokia.com/
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Мультиплатформенный "пускач" приложения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]