Если вы читали предыдущий материал и делали как там описано, вы могли заметить, что хоть программа и работает при запуске из среды выполнения POSIX программ, но не работает если её запустить напрямую из Windows.
Связано это с тем, что gcc компилирует EXE-файл динамически линкованный. Т.е. библиотеки используемые для его работы будут браться из системы. Чтобы такого не происходило gcc запускают с параметром -static для статичной линковки программы и тогда . Однако наша среда эмуляции POSIX — MSys2 и тут подложила свинью, и в терминале запускаемом по умолчанию даже при указании этой опции файл будет неработоспособен в среде Windows, так как будет требовать библиотеку msys-2.dll
Поэтому в этой записи я расскажу как скомпилировать программу чтобы её можно было использовать в Windows напрямую.
Для этого, запускаем среду MinGW64 из меню Пуск-MSYS2
После этого требуется установить mingw64 компилятор командой
pacman -S mingw-w64-x86_64-gcc
и дождаться установки
После завершения установки, среду требуется закрыть и запустить заново. Теперь проверим что компилятор изменился на версию Mingw командой which gcc
Все. Теперь компилируем наш HelloWorld командой
gcc hello.c -o hello.exe
И пробуем запустить. Программа должна запуститься и закрыться без каких-либо ошибок. Это происходит очень быстро, максимум что вы возможно успеете увидеть это мелькнувшее окно консоли. Как сделать чтобы программа ожидала вашего ввода перед своим закрытием — я расскажу в следующем посте.
Поделиться ссылкой: