|
|
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
Добрый день. Необходимо написать native "запускалку" приложения для нескольких платформ (Win, Win64, Linux, Linux64, MaсOS X, возможно FreeBSD) Сама суть работы очень простая - уметь скачать файл по http:// и запустить его. Никаких GUI, баз данных и т.д. Что хотелось бы: 1) Одни исходники для всех платформ 2) Кросс-компиляция исходника с одной платформы для всех целевых (работаю в Linux, хотелось бы "нажать на кнопку" и получить сразу кучу исполняемых файлов, по-одному для каждой целевой платформы) Вопрос: на чем можно быстро и просто написать такое приложение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 12:05:40 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
dotman, ИМХО, 1. Java... Один раз скомпилировал - работает везде, где есть Java-машина... 2. JavaScript... Запускать из браузера; только надо следить, чтобы не было отключено исполнение сценариев... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 12:43:13 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
Станислав С...кий, Извините, так и думал что надо выделить ключевое слово в моем первом посте: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 13:01:43 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
Я на FreePascale реально создал кроссплатформенное приложение (правда, консольное). Это был редактор DBF файлов, одинаково работал в командной строке WinXP и в консоли Linux Mandriva. Если у него имеется возможность доступа к Инету, то я бы попробовал на этом ЯП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 13:45:46 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
dotman, wget ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 13:54:55 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
miksoftwget ? Рассматривал возможность написать тупо по shell-скрипту для каждой платформы, но оставил это на крайний случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 14:54:31 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
VowkЯ на FreePascale реально создал кроссплатформенное приложение (правда, консольное). Это был редактор DBF файлов, одинаково работал в командной строке WinXP и в консоли Linux Mandriva. Если у него имеется возможность доступа к Инету, то я бы попробовал на этом ЯП. А компиляция как происходила? На одной платформе сразу для нескольких целевых или в Windows делали *.exe, в Linux - elf? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 14:56:40 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
dotmanmiksoftwget ?Рассматривал возможность написать тупо по shell-скрипту для каждой платформы, но оставил это на крайний случай.Да там скрипта того - три строчки. Кстати, есть шанс сделать его кроссплатформенным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 14:58:54 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
miksoftКстати, есть шанс сделать его кроссплатформенным. Каким образом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 15:06:16 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
dotmanmiksoftКстати, есть шанс сделать его кроссплатформенным. Каким образом?Кстати наврал, четыре строчки. Что-то типа того: Код: plaintext 1. 2. 3. Моменты, которые нужно не упустить: 1) разные переносы строк (не помню, в какой из ОС играют роль, в какой нет). 2) имя скачиваемого файла может отличаться для разных ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 15:20:32 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
dotmanЧто хотелось бы: 1) Одни исходники для всех платформ 2) Кросс-компиляция исходника с одной платформы для всех целевых (работаю в Linux, хотелось бы "нажать на кнопку" и получить сразу кучу исполняемых файлов, по-одному для каждой целевой платформы) Вопрос: на чем можно быстро и просто написать такое приложение?На С естественно :) Компилятор стандартный gcc. Прийдется правда слегка повозится и поставить нужные platform-specific SDK (и возможно пересобрать сам gcc чтобы разрешить кросс-компиляцию). А так же надо будет следить чтобы не использовались уникальные для какой-либо из систем библиотеки. То есть либо самому писать сетевой протокол, либо использовать статическую линковку. Зато потом просто gcc -mwindows, gcc -mglibc, gcc -mmacosx и так далее. Разница будет только в makefile ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 17:46:57 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
dotmanДобрый день. Необходимо написать native "запускалку" приложения для нескольких платформ (Win, Win64, Linux, Linux64, MaсOS X, возможно FreeBSD) Проблема в том, что нельзя гарантировать наличия компиллятора (особенно на Windows-платформах). А если ты будешь приаттачивать компиллятор для всех платформ, тогда постановка вырождается. Возникает здравый вопрос "и причём тут crossplatform" ? Распространяй готовые бинарники и всё будет ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 17:57:34 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
dotman А компиляция как происходила? На одной платформе сразу для нескольких целевых или в Windows делали *.exe, в Linux - elf? Ставил в Windows вариант FreePascal для x86, а в Linux - свой вариант. Общими были иходные тексты программы, а компиляция в каждой системе своя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 18:10:24 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
Html-страничкой ? (;,;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 20:47:57 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
С0ВЕСТЬHtml-страничкой ? Но это вроде как не native считаетсо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 21:04:59 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
maytondotmanДобрый день. Необходимо написать native "запускалку" приложения для нескольких платформ (Win, Win64, Linux, Linux64, MaсOS X, возможно FreeBSD) Проблема в том, что нельзя гарантировать наличия компиллятора Вы как-то неправильно вопрос поняли. Я, грубо говоря, хочу распространять 10kb *.exe файл, который только и умеет что скачать другой файл с сервера по http:// и запустить его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 23:09:21 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
White Owl На С естественно :) Компилятор стандартный gcc. Прийдется правда слегка повозится и поставить нужные platform-specific SDK (и возможно пересобрать сам gcc чтобы разрешить кросс-компиляцию). А так же надо будет следить чтобы не использовались уникальные для какой-либо из систем библиотеки. То есть либо самому писать сетевой протокол, либо использовать статическую линковку. Зато потом просто gcc -mwindows, gcc -mglibc, gcc -mmacosx и так далее. Разница будет только в makefile Спасибо за наводку, пара вопросов (я в C сильно "не очень", извините если вопросы глупые): автор"либо самому писать сетевой протокол" Я правильно понимаю, что у меня код будет в виде Код: plaintext 1. 2. 3. 4. 5. авторлибо использовать статическую линковку Т.е. я могу использовать уникальные библиотеки для каждой платформы и статически "вшивать" конкретную либу в конкретный исполняемый файл для определенной платформы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 23:21:17 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
dotmanавтор"либо самому писать сетевой протокол" Я правильно понимаю, что у меня код будет в видеНет, как раз в случае собственного протокола код будет один общий для всех. Работа с сокетами во всех операционках одинакова. dotman Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. Потом при окончательной компиляции проекта подсовываешь линкеру один из платформо-зависимых файлов. Получится примерно как класс с виртуальными функциями, но вручную. dotmanавторлибо использовать статическую линковку Т.е. я могу использовать уникальные библиотеки для каждой платформы и статически "вшивать" конкретную либу в конкретный исполняемый файл для определенной платформы?Нет, это будет как раз случай условной компиляции. Там уже не важно статическая или динамическая библиотека используется. Если она системо-зависимая, то условная компиляция и никаких гвоздей. Под статической линковкой я подразумевал чью-нибудь чужую системо-независимую реализацию протокола. В смысле не ты сам возишься с сокетами а используешь чужую возню. Обычно такие библиотеки компилируются в dll/so, а можно их и статически прилинковать (если лицензия позволяет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 00:49:39 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
White Owl, Спасибо за ответы, буду пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 10:32:01 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
И кстати, очень сильно советую не возится с кросс-компиляцией, а поставить себе несколько машин в реальном или виртуальном вариантах. Будет и намного проще и надежней компилировать и тестировать сможешь не отходя от кассы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 18:26:17 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
Немного поковырялся, расскажу к чему пришел, может кому пригодится. Практически сразу я понял, что компиляция на одной платформе сразу для всех - практически нереально. Гораздо проще и удобнее компилировать на каждой поддерживаемой платформе свой бинарник отдельно. Значит, задача стала выглядеть так: имеем одни исходники, которые компилируем на каждой платформе. На практике - в VirtualBox установил Windows с FreeBSD и компилирую там. Что делать для MacOS X - пока не решил. Реализация - написал на С++ приложение под Linux с использованием libcurl, отладил, заработало. Для Windows скачал бесплатный Visual C++ Express, скачал исходники libcurl, собрал libcurl, после этого добавил windows-специфичный код через IFDEF, откомпилировал (без С++ спеца рядом - хер бы разобрался под Windows) Вроде все хорошо, но гемморой для Windows немного напрягает. На днях узнал про QtCreator который как я понял, содержит кросс-платформенные реализации различных библиотек, в том числе и для работы с HTTP. Планирую посмотреть QtCreator, если там все так радужно - перепишу. Из плюсов - нет деления на код для разных платформ + одна среда (QtCreator) для всех платформ. Впечатление в целом - я Java-программист, охреневаю как в C++ все непросто :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 19:32:15 |
|
||
|
Мультиплатформенный "пускач" приложения
|
|||
|---|---|---|---|
|
#18+
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/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2010, 01:36:28 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36441813&tid=1343903]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
184ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 466ms |

| 0 / 0 |
