为什么使用mingw

参考:http://c.biancheng.net/view/8077.html
GCC 官网提供的 GCC 编译器是无法直接安装到 Windows 平台上的,如果我们想在 Windows 平台使用 GCC 编译器,可以安装 GCC 的移植版本。
目前适用于 Windows 平台、受欢迎的 GCC 移植版主要有 2 种,分别为 MinGW 和 Cygwin。其中,MinGW 侧重于服务 Windows 用户可以使用 GCC 编译环境,直接生成可运行 Windows 平台上的可执行程序,相比后者体积更小,使用更方便;而 Cygwin 则可以提供一个完整的 Linux 环境,借助它不仅可以在 Windows 平台上使用 GCC 编译器,理论上可以运行 Linux 平台上所有的程序。
如果读者仅需要在 Windows 平台上使用 GCC,可以使用 MinGW 或者 Cygwin;除此之外,如果读者还有更高的需求(例如运行 POSIX 应用程序),就只能选择安装 Cygwin。

mingw介绍

MinGw 全称 Minimalist GNU for Windows,应用于 Windows 平台,可以为我们提供一个功能有限的 Linux 系统环境以使用一些 GNU 工具,比如 GCC 编译器、gawk、bison 等等。

安装mingw

参考:https://www.cnblogs.com/TAMING/p/9945389.html
下载地址:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/
下载这个:
image.png
MinGW-w64各版本区别(sjlj seh dwarf)
DWARF:一种带调试信息(DWARF- 2(DW2)EH)的包, 所以比一般的包尺寸大,仅支持32位系统
SJLJ:跨平台,支持32,64位系统,缺点是:运行速度稍慢,GCC不支持
SEH: 调用系统机制处理异常,支持32,64位系统,缺点是:Gcc不支持(即将支持)
安装步骤参考:https://www.cnblogs.com/lishanyang/p/15768083.html
i686和x86_64分别表示32位和64位的gcc
image.png

image.png
image.png
无法通过在线下载进行安装,之后参考:https://stackoverflow.com/questions/46455927/mingw-w64-installer-the-file-has-been-downloaded-incorrectly

直接去另一个网址下载编译好的:
下载地址:https://winlibs.com/#download-release
image.png
winlibs-x86_64-posix-seh-gcc-9.4.0-mingw-w64-9.0.0-r2.zip
加入到环境变量即可
image.png
image.png

编译程序

命令行编译hello

mygccproject.zip

  1. #include<stdio.h>
  2. int main(){
  3. printf("hello");
  4. return 0;
  5. }

image.png

命令行编译的hello特征

特征主要是关于tls 的
image.png
image.png

vscode编译

参考:https://www.cnblogs.com/lishanyang/p/15768083.html
vscode是免费的,下载zip格式解压就能用
image.png
至于如何配置,参考:https://blog.csdn.net/qq_45766131/article/details/105640605
https://www.yuque.com/hackdoors/dcilgi/em8w99#odB3G
task.json——用于编译
launch.json——用于自定义调试
c_cpp_properties.json——用于智能提示

vscode介绍

image.png
在mingw的bin目录中含有很多exe、dll,这些exe、dll组成了c程序在windows系统下的编译器

  1. addr2line.exe
  2. ar.exe
  3. as.exe
  4. c++.exe
  5. c++filt.exe
  6. cpp.exe
  7. dlltool.exe
  8. dllwrap.exe
  9. dos2unix.exe
  10. elfedit.exe
  11. g++.exe
  12. gcc-ar.exe
  13. gcc-nm.exe
  14. gcc-ranlib.exe
  15. gcc.exe
  16. gcov-dump.exe
  17. gcov-tool.exe
  18. gcov.exe
  19. gdb-add-index
  20. gdb.exe
  21. gdbserver.exe
  22. gendef.exe
  23. genidl.exe
  24. gfortran.exe
  25. gprof.exe
  26. iconv.exe
  27. ld.bfd.exe
  28. ld.exe
  29. mac2unix.exe
  30. mingw32-make.exe
  31. ninja.exe
  32. nm.exe
  33. objcopy.exe
  34. objdump.exe
  35. pexports.exe
  36. ranlib.exe
  37. readelf.exe
  38. size.exe
  39. strings.exe
  40. strip.exe
  41. unix2dos.exe
  42. unix2mac.exe
  43. widl.exe
  44. windmc.exe
  45. windres.exe
  46. x86_64-w64-mingw32-c++.exe
  47. x86_64-w64-mingw32-g++.exe
  48. x86_64-w64-mingw32-gcc-9.4.0.exe
  49. x86_64-w64-mingw32-gcc-ar.exe
  50. x86_64-w64-mingw32-gcc-nm.exe
  51. x86_64-w64-mingw32-gcc-ranlib.exe
  52. x86_64-w64-mingw32-gcc.exe
  53. x86_64-w64-mingw32-gfortran.exe