LINUX.ORG.RU

О кросс-платформенной компиляции для новичка

 , ,


1

3

Работаю на винде. Цель: исполняемая программа для Win, Linux. Инструменты: MinGW и Code::Blocks.

Для начала скомпилил хелловорд. Не запускается - требует libgcc_s_dw2-1 и libstdc++-6.

Вопросы: 1. Что это за библиотеки, кто знает? Они нужны только в винде или на линуксе тоже?

2. Зависимости - это речь только о библиотеках?

3. Как происходит компиляция в исполняющий файл в случае, если его хочешь запускать и на линуксе (макос, проч.)? Какие зависимости могут быть в линуксе? Как предусмотреть эти зависимости? Никак, только с помощью сообщений от ОС, что «не могу запустить, потому что нет такой-то библиотеки»?



Последнее исправление: nevro (всего исправлений: 3)

Значит получается, мне нужно:
1. Поставить линукс.
2. Научиться собирать через makefile.

С созданием makefile'ов буду гуглить. А по поводу линукса какой посоветуете? Упоминали и ArchLinux, и Fedora. Ставил себе только убунту (не надолго). Или без разницы? Тут еще нюанс (а может и нет) - еще интересно запилить на Steam.

И, если я верно понял, мне не предусмотреть заранее, какие зависимости будут у моего кода на разных платформах? Заведомо известные зависимости - это рантайм-библиотеки каждой платформы и те библиотеки, которые буду использовать (boost, stl, wxWidgets, qt, sdl2 и т.п.)?

nevro
() автор топика
Ответ на: комментарий от nevro

Упоминали и ArchLinux, и Fedora. Ставил себе только убунту (не надолго). Или без разницы?

Без разницы. Это уже тараканы в их головах говорят тебе ставить их любимый дистрибутив.

С созданием makefile'ов буду гуглить.

Лучше сразу гугли CMake. Оно кросплатформенно (под Шin даже GUI есть) и будет создавать тебе Makeфайлы автоматически со всеми зависимостями и довольно простое в освоении.

Unicode4all ★★★★★
()
Последнее исправление: Unicode4all (всего исправлений: 1)
Ответ на: комментарий от nevro

код может быть кроссплатформенным, по большей части (и то чаще всего обрастает ifdef'ами). но, в конечном итоге, под каждую систему его лучше собирать в родном окружении. потому что везде свои тараканы, а юзер хочет получить работающее приложение из коробки. то есть, с инсталлятором и без дополнительного геморроя с притягиванием лишних зависимостей.
кроссплатформа из-под венды в линь - вещь возможная, но зело геморно. в обратную сторогу гораздо проще, под линём кросскомпилировать под другие системы.
могу посоветовать ресурс про кроссплатформенное программирование crossplatform.ru. там навалом и документации, и форум с кучей вопросов конкретно по кроссплатформе, и про сборки под вендой в том числе. а здесь венда оффтопик и вряд ли что посоветуют. я сама давно уже с вендой дел не имею, но кое-что ещё помню, со старых времён.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от nevro

А по поводу линукса какой посоветуете?

Вообще-то правильный ответ - «тот, по которому у тебя есть знакомый гуру». Убунту не такой плохой выбор, но у неё есть обратная сторона - за вшитую поддержку большого количества разнообразного железа приходится платить, и в итоге это не самый маленький и не самый быстрый дистрибутив. Думаю, Арч и Генту на первых порах не стоит, можно посмотреть на Минт, Федору, отечественный ROSA Fresh. Сам сижу на дебиане, по мне так вполне беспроблемная вещь (SteamOS основан на дебиане, если что), но те, кто его ставил на ноутбуки, жалуются на сложность установки Wi-Fi. Пару лет назад очень хорош был openSUSE (12.2), но в последних версиях что-то напакостили с мультимедией, и теперь, чтобы что-то посмотреть-послушать, даже при подключённых дополнительных репозитариях надо трясти с бубном.

hobbit ★★★★★
()
Ответ на: комментарий от Iron_Bug

но, в конечном итоге, под каждую систему его лучше собирать в родном окружении. потому что везде свои тараканы, а юзер хочет получить работающее приложение из коробки

Плюсую, и не только собирать, но и тестировать.

hobbit ★★★★★
()
Ответ на: комментарий от Unicode4all

Лучше сразу гугли CMake

Погуглил. На стековерфлоу сказали, что использовать для кроссплатформы. Углубляться в причины не стал - и так сойдет:)

nevro
() автор топика
Ответ на: комментарий от Iron_Bug

но, в конечном итоге, под каждую систему его лучше собирать в родном окружении.

Разрабатываю в линуксе, компилю в каждой целевой платформе. Интересуюсь геймдевом. Интересный подход нашел у Godot (типа юнити, но опенсорс под MIT): скриптовый код работает через плеер, который состоит из скомпилированных библиотек под платформы. Не знаю пока как на практике, но собирать на других платформах не надо - на своей, на которой разрабатываешь, подцепляешь библиотеки мака, например.

ресурс про кроссплатформенное программирование crossplatform.ru.

Спасибо!

nevro
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.