Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
 Аватар для alexsamos33
669 / 640 / 335
Регистрация: 26.04.2014
Сообщений: 2,122

Компиляция кроссплатформенных приложений / исполняемых файлов

26.06.2014, 21:33. Показов 3835. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть Windows 7 и PureBasic 5.1 активированный.
PureBasic это кросс платформенная среда разработки программ.
У меня возникла небольшая проблема при компиляции под другие платформы кроме Windows.
Я читал этот учебник где написано:
Не нужно думать что один и тот же скомпилированный исполняемый файл получится запустить на разных платформах - это фантастика!
Кроссплатформенность существует только на уровне исходного текста программы и для создания исполняемого файла для требуемой платформы, нужно воспользоваться компилятором для этой платформы.
Но вот у меня есть только Windows X86.
Далее там написано:
Значит, запускаем PureBasic. При запуске будет создан новый проект, который надо сохранить на диске под любым именем. Далее нужно немного изменить свойства проекта. Для этого в меню Компилятор выбираем пункт Настройки компилятора и в открывшемся окне отмечаем пункт Создать unicode приложение и в выпадающем списке Кодировка исходного файла выбираем пункт UTF-8.
Это необходимо для поддержки кириллицы в Linux, а для Windows это не имеет существенного значения
Галочка Создать unicode приложение у меня есть и я её отметил, а вот выпадающего списка с кодировками нет...
Также я не знаю как выбрать тип исполняемого файла (Windows / linux и т.д.) у меня есть только Windows X86
Вопрос: можно ли из под Windows компилировать исполняемые файлы под другие ОС? Или может быть для них нужно отдельно что-то скачать?
Тестовая программа:
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Procedure.s _GetOs()
  ret.s = ""
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_AmigaOS
      ret = "AmigaOS"
    CompilerCase #PB_OS_Linux
      ret = "Linux"
    CompilerCase #PB_OS_Windows
      ret = "Windows"
    CompilerCase #PB_OS_MacOS
      ret = "MacOS"
  CompilerEndSelect
  ProcedureReturn ret
EndProcedure
 
MessageRequester("tst1", "Current directory: "+GetCurrentDirectory(), 64)
MessageRequester("tst2", "Computer name: "+ComputerName(), 64)
MessageRequester("tst3", "OS: "+_GetOs(), 64)
 
; IDE Options = PureBasic 5.11 (Windows - x86)
; Folding = -
; EnableUnicode
; EnableXP
; Executable = pb_tst.exe
; DisableDebugger
; Compiler = PureBasic 5.11 (Windows - x86)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.06.2014, 21:33
Ответы с готовыми решениями:

С++ разработчик кроссплатформенных приложений (удаленная работа)
Иностранная компания приглашает на удаленную работу Разработчика С++ Требования: • Опыт разработки мобильных приложений • опыт...

Подскажите лучшую практику по созданию кроссплатформенных приложений?
Хочу определиться для себя с созданием кроссплатформенных приложений IOS/Android. Подскажите как проще и удобнее делать? Писать на андроид...

Стоит ли изучать JavaFX для разработки кроссплатформенных графических приложений?
Всем привет. Хотел спросить, стоит ли изучать для разработки кросс платформенных графических приложений ? Любые мнения по поводу этой...

12
109 / 88 / 28
Регистрация: 21.08.2012
Сообщений: 371
27.06.2014, 13:14
Цитата Сообщение от alexsamos33 Посмотреть сообщение
Вопрос: можно ли из под Windows компилировать исполняемые файлы под другие ОС? Или может быть для них нужно отдельно что-то скачать?
Чтобы компилировать для Linux, у вас должен быть Linux и версия Purebasic для него. Для Mac и Amiga аналогично

Цитата Сообщение от alexsamos33 Посмотреть сообщение
а вот выпадающего списка с кодировками нет...
Он в меню находится
Миниатюры
Компиляция кроссплатформенных приложений / исполняемых файлов  
1
 Аватар для alexsamos33
669 / 640 / 335
Регистрация: 26.04.2014
Сообщений: 2,122
28.06.2014, 11:08  [ТС]
А если к примеру у меня на компе Windows x86, а я хочу сделать прогу для x64 то мне тоже понадобится Windows x64 и Purebasic для неё?
Вот к примеру в AutoIt Есть такая штука (можно компилить в x64 из под 86)

а в basic так нельзя?
Миниатюры
Компиляция кроссплатформенных приложений / исполняемых файлов  
0
Эксперт по электронике
6582 / 3209 / 335
Регистрация: 28.10.2011
Сообщений: 12,525
Записей в блоге: 7
28.06.2014, 11:14
Цитата Сообщение от alexsamos33 Посмотреть сообщение
А если к примеру у меня на компе Windows x86, а я хочу сделать прогу для x64 то мне тоже понадобится Windows x64 и Purebasic для неё?
Да. Но не обязательно устанавливать ОС на комп. Можно воспользоваться диском LiveCD с x64 системой. Или установить на виртуальную машину.
Вот в x64 винде можно создавать приложения для x86 и x64.

Цитата Сообщение от alexsamos33 Посмотреть сообщение
Вот к примеру в AutoIt Есть такая штука (можно компилить в x64 из под 86)
Для AutoIt нет компилятора. То что называете компиляцией на самом деле является вшиванием скрипта в заранее скомпилированную программу.
0
 Аватар для alexsamos33
669 / 640 / 335
Регистрация: 26.04.2014
Сообщений: 2,122
28.06.2014, 12:22  [ТС]
Всё, теперь понятно...

Значит чтобы компилировать под все доступные платформы мне нужно в наборе иметь все ОС? Это мне кажется не много туповато...
А это так во всех языках программирования?
0
Эксперт по электронике
6582 / 3209 / 335
Регистрация: 28.10.2011
Сообщений: 12,525
Записей в блоге: 7
28.06.2014, 18:52
Цитата Сообщение от alexsamos33 Посмотреть сообщение
Значит чтобы компилировать под все доступные платформы мне нужно в наборе иметь все ОС? Это мне кажется не много туповато...
Смотря с какой стороны на это посмотреть. К примеру если бы существовал кросс-компилятор, то в дистрибутиве должны были бы быть библиотеки для всех платформ, т. е. каждый дистрибутив имел размер больше 200 МБ. К тому же разработка кросс-компилятора для множества платформ это задача намного сложнее чем разработка отдельного компилятора для каждой платформы в отдельности.

Цитата Сообщение от alexsamos33 Посмотреть сообщение
А это так во всех языках программирования?
В компилируемых в натив как правило да. Но в компилируемых в байт-код или скриптовых может быть по другому, но в них нет полноценной компиляции. Байт-код или скрипт (как в AutoIt) зашивается в заранее скомпилированную программу. В итоге большой размер исполняемого файла, медленная работа и возможность получить исходный текст из исполняемого файла, т. е. защиты исходника почти нет.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
28.06.2014, 21:43
Цитата Сообщение от alexsamos33 Посмотреть сообщение
А это так во всех языках программирования?
Есть относительно молодая но перспективная среда Construct 2. Так вот там после создания приложения можно нажать только на одну кнопку - Decktop и в указанную папку компилируется сразу в четыре новых папки приложения для 4-х платформ: linux32, linux64, osX, win32
Или есть кнопки для любой мобильной платформы будь то Андроид или там BlackBerry ( около 14 различных платформ), плюс HTML5 версия программы, которую сразу можно на сайт выложить и будет работать вообще на любом компе в браузере. И всё это делает одна среда, ни каких других платформ на комп устанавливать не надо! Вот это реальная мультиплатформенность.
А если ещё учесть, что в этой среде программы не пишутся, а конструируются, причем с полной поддержкой ООП, то это вообще мечта!

Хотя есть свои недостатки. К примеру, простой "Привет, мир" будет весить метров эдак 50 примерно.
0
Эксперт по электронике
6582 / 3209 / 335
Регистрация: 28.10.2011
Сообщений: 12,525
Записей в блоге: 7
28.06.2014, 22:00
Цитата Сообщение от Pro_grammer Посмотреть сообщение
К примеру, простой "Привет, мир" будет весить метров эдак 50 примерно.
Ну вот о чем я писал выше.
Цитата Сообщение от locm Посмотреть сообщение
Но в компилируемых в байт-код или скриптовых может быть по другому, но в них нет полноценной компиляции. Байт-код или скрипт (как в AutoIt) зашивается в заранее скомпилированную программу. В итоге большой размер исполняемого файла, медленная работа и возможность получить исходный текст из исполняемого файла, т. е. защиты исходника почти нет.
ИМХО установить на виртуальную машину (или загрузить с LiveCD) требуемую систему не так сложно, а преимуществ нативного кода много. Это и небольшой размер исполняемого файла и относительно высокая скорость выполнения и практически недоступность исходного текста (можно только дизассемблировать, но это не декомпиляция и исходник не получить).
0
 Аватар для alexsamos33
669 / 640 / 335
Регистрация: 26.04.2014
Сообщений: 2,122
28.06.2014, 23:42  [ТС]
Ну да, согласен.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
29.06.2014, 07:47
Цитата Сообщение от locm Посмотреть сообщение
установить на виртуальную машину (или загрузить с LiveCD) требуемую систему не так сложно
Ну может не сложно саму систему установить. Но высокие требования к железу для комфортной работы того же lin64 есть не у каждого. Про mac os x вообще молчу - ту комп нужен очень мощный, да и не каждый сумеет её поставить на виртуалку. 3D режим Пурика на виртуалке - это вообще из области фантастики.
Идея с LiveCD вообще ерунда - PureBаsic из коробки не заработает ни на Linux, и уж тем более Mac os. Нужно качать много дополнительных пакетов, что бы хоть что то скомпилировать, даже на полноценных ОС! А на LiveCD что делать?

Для скрытия кода есть обфускация, и это работает. Про скорость тоже мимо. Обычно все конструкторы игр заточены именно для игр. А это очень высокие требования к скорости, так что тут тоже проблем нет. Да и размер в играх определяется не кодом, а ресурсами - графика, музыка. При размере игры в 2-3 гигабайта какая разница, что пустой код 50 метров?
0
Эксперт по электронике
6582 / 3209 / 335
Регистрация: 28.10.2011
Сообщений: 12,525
Записей в блоге: 7
29.06.2014, 11:57
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Но высокие требования к железу для комфортной работы того же lin64 есть не у каждого.
Я эту систему в режиме LiveCD запускал и компилировал программы. Не скажу что сильно требовательна к железу.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
3D режим Пурика на виртуалке - это вообще из области фантастики.
Зачем он нужен для компиляции? Отладить 3D можно под виндой.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Идея с LiveCD вообще ерунда - PureBаsic из коробки не заработает ни на Linux
В чем проблема? Установка libgtk2-dev выполняется за пару минут (зависит от ширины канала инета) и после чего можно компилировать большинство программ. Много раз так поступал, т. к. компилировать под Linux x64 нужно не очень часто и держать ее на винте - нерационально.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
При размере игры в 2-3 гигабайта какая разница, что пустой код 50 метров?
Можете привести пример приличной игрушки на Construct 2 или чем-то подобном имеющей такой размер?
Сколько человек в команде и лет необходимо для создания полноценной игры? Вот тото-же! Игры созданные не профессионалами весят намного меньше 2 ГБ, конечно если они не быдлокодеры и не быдлодизайнеры.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
29.06.2014, 12:24
А можете привести пример livecd МасХ на котором заработает Пурик?
0
Эксперт по электронике
6582 / 3209 / 335
Регистрация: 28.10.2011
Сообщений: 12,525
Записей в блоге: 7
29.06.2014, 12:38
Цитата Сообщение от Pro_grammer Посмотреть сообщение
А можете привести пример livecd МасХ
Нужно искать "кустарного" производства. Может и есть.
А в Linux по умолчанию, в дистрибутиве есть возможность запуска в режиме LiveCD.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.06.2014, 12:38
Помогаю со студенческими работами здесь

Копирование исполняемых файлов
Скопировать все имеющиеся в каталоге Windows исполняемые файлы в каталог WinEx. Как выбрать именно исполняемые файлы?

Запуск исполняемых файлов
Всем привет! У меня есть вот такая вот штука application/x-executable. Как я понимаю это исполняемый файл, и для меня человека проведшего...

Исследование исполняемых файлов
Пишу программу для анализа исполняемых файлов но возникла проблема. Как узнать файловое смещение таблицы импорта зная ее виртуальный адрес....

Поиск исполняемых файлов
У меня такая задача: найти в заданном каталоге и всех его подкаталогах все исполняемые файлы. Диапазон (мин. мах.) размеров файлов -...

Каталоги исполняемых файлов
При подключении каталога исполняемых файлов в VS2010, построение даже пустых проектов говорит: 1>InitializeBuildStatus: ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru