@jotrib

Какой компилятор для языка Си посоветуете?

Самообучаюсь по языку Си по книжке. У меня только одна система с Win 10 с установленной WSL2. Какой компилятор использовать лучше из msys2 или MinGW64? Хотелось бы подключить компилятор к CodeBlocks, но и периодически использовать командную строку чтоб не забывать. Библиотеки хотелось бы использовать самые разные например вулкан sdk, но хорошо бы кроссплатформенные.
  • Вопрос задан
  • 808 просмотров
Пригласить эксперта
Ответы на вопрос 5
Mingw - это не компилятор, компилятор это GCC. Вот его и используйте.
Ответ написан
@Miron11
Пишу sql 20 лет. Срок :)
Я, по доброте душевной, думал Вам Windows SDK с MSBuild посоветовать. И тут прочел MSDN статью по WSL и почувствовал себя безнадежно отставшим от жизни :)))))))))))))))))
https://code.visualstudio.com/docs/cpp/config-wsl
Но потом посмотрел здесь https://docs.microsoft.com/en-us/cpp/build/buildin...
и немного успокоился
https://docs.microsoft.com/en-us/cpp/build/buildin...
Вспомнил, что есть Visual Studio Community Edition, есть, хорошо законспирированный, но неубиваемый, Борлановский компайлер, который после 10 часов поиска раз в 10 лет спасает корабль, и все встало на место.
Vulkan... запретный плод сладок.
Ответ написан
Комментировать
vabka
@vabka
Токсичный шарпист
Раз используете wsl2, то используйте gcc из него.
Ответ написан
Комментировать
MSYS это набор POSIX-совместимых тулзов для Windows, он не имеет отношения к WSL2. MSYS2 вам не требуется, если вам не нужны тулзы, в качестве компилятора и библиотек он использует MinGW. MinGW тоже не имеет отношения к WSL. С помощью MinGW вы можете собирать родные Windows-приложения, собрать ими приложение под Linux не получится.

Ответ в вашем случае - для изучения C по книжке скорей всего достаточно CodeBlocks+MinGW. WSL вам вообще не требуется. Он пригодится только если вы захотите разрабатывать приложения специфичные для POSIX или Linux.
Ответ написан
Комментировать
@int0Ah
Честно говоря, для обучения подойдёт любой компилятор.
Если будете писать в CodeBlocks, то используйте любой gcc.
Нюансы могут появиться:
- при освоении c++ - поддержка актуальных стандартов может различаться у разных компиляторов,
- при опеределённых требованиях к оптимизации - по скорости, по ОЗУ, по размеру исполняемого кода, для определённых архитектур/конкретных процессоров и т. п. (это в основном про эмбеддед),
- при использовании специфичных SDK, заточенных на конкретные инструменты разработки (это тоже про эмбеддед).

Ниже иллюстрация про случай, где выбор компилятора действительно был важен.
По работе в одном из наших проектов было большое желание перейти с Keil на gcc ради использования нормальных IDE и ради сборки под любые архитектуры, в т. ч. Cortex-M, Cortex-A, x86, amd64 и с разными ОС - FreeRTOS, Linux, Windows. Но были и ограничения - в ряде случаев для нас был критичен размер бинарника, а в ряде других случаев - эффективность использования ОЗУ.
Ни одна из опробованных версий gcc "из коробки" не подходила, то есть прошивка либо не влезала в выделенную для неё область флеш-памяти, либо не могла работать из-за нехватки ОЗУ.
Меняли версии компилятора, меняли опции компиляции, в итоге дошли до пересборки самого gcc с разными опциями. Так вот, мы так и не сумели заставить gcc генерить такой же эффективный по нашим критериям код для микроконтроллеров, как Keil. Тем не менее, добились определённых позитивных результатов и на gcc всё-таки перешли.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы