msys2

29 января 2023, 18:37
Maxim Kuznetsov
2
94

Что-то вспомнилось про одну из "непропущенных в статьи статью", она просто как никогда актуальна: всем пора СРОЧНО переезжать с микрософт студии. Далее быстро в несколько слов как сие сделать

самая хорошая и стабильная альтернатива компилятору VC - компилятор gcc. А самый стабильный тулчайн msys2. К слову - там и clang тоже есть, но лично я им не пользовался.

итак: компилятор, окружение и репозитарий пакетов ставится прямо с оф.сайта, строго следуя их инструкции: https://www.msys2.org/

не отклоняясь, прямо строго по их инструкции. Каталог установки : c:/msys2 , настоятельно рекомендуют оставить и не изменять. 

чтобы основные команды были доступны из командной строки и поменьше было секса с DLL, стоит добавить некоторые пути в %PATH% :

в результате будет получено окружение максимально близкое к Linux - bash,ls,gcc,make и прочие. То чего вечно в Windows нехватает :-)

новые пакеты и библиотеки ставятся командой pacman (как в arch linux) . Основные команды, которые будете часто использовать:

поиск пакета в репозитарии:

pacman -Ss имя_прграммы_или_библиотеки

и установка пакета:

pacman -S полное_имя_влючая_тулчайн

детальнее см. https://www.msys2.org/docs/package-management/

IDE

кто не привык к командной строке и жаждет разных красивостей - удобная и быстрая ide CodeLight (можно поставить из репозитария через pacman или нативно инсталлятором https://codelite.org/

и старая-добрая Dev-C++ в новом воплощении https://www.embarcadero.com/ru/free-tools/dev-cpp

или Eclipse (https://www.eclipse.org/downloads/packages/installer) но он мягко говоря весьма велик :-) я его раз в год ставлю, а потом всенепременно сношу...даже частью всех фичь не пользуюсь , но место он жрёт будь здоров

все три перечисленные подхватывают msys2 и с ним работают 

можно ещё приручить VSCode и его клоны, но за этим в гугл 

Полезные заметки

ldd

очень нужная в windows команда из мира Linux: ldd - покажет зависимости dll или exe файла. То есть какие dll-ки ему нужны и где они лежат. Использовать крайне просто :

ldd имя_файла

все про него расскажет

полезные ключи gcc 

кто впервые с gcc:

    опции -Wall -Wextra включат отображение всех ошибок и предупреждений при компиляции (лучше всегда их использовать)

    для генерации отладочной информации ключ -g

    для управления оптимизацией -O .. -O2 или -O3 разумный выбор

    генерация 32-х битного кода -m32; 64-х битного соответственно -m64

для сборки dll:

    ключ -shared говорит что надо собирать разделяемую библиотеку dll (в Linux .so)

    -static-libgcc упакует стандартную библиотеку С статикой

    -pthread и -lpthread (сразу две) говорит что собирается код для multitread приложения (MT 4/5 - мультитред, то есть обязательные ключи, оба надо указывать)

    - хитрая опция -Wl,--subsystem,windows,--kill-at  скажет линкеру что имена надо генерировать без _палочки. 

    - еще одна -Wl,--out-implib,libВашаБиблиотека.a  - значит помимо dll сделать импортируемую .a библиотеку (если dll используете только из MT можете не замуториваться)

    - зато def файлы ненужны :-) компилятор по декларациям в коде разбирается что экспортируемо, а что нет

ещё раз : кто ещё не разобрался с gcc и маршрутом миграции от MS VC C/C++ то самое время этим заняться.

Ещё немного и корпорации добра начнут отзывать ключи и все "лицензии разработчика" накроются медным тазом. В некоторых случаях, даже с выпущенным вами софтом.