其他分享
首页 > 其他分享> > MinGW-W64 介绍 应用. 扩展: build 编译 compile 生成 CMake makefile gcc dll lib V1.0

MinGW-W64 介绍 应用. 扩展: build 编译 compile 生成 CMake makefile gcc dll lib V1.0

作者:互联网

MinGW

有两个名字相近的项目MinGWMinGW-w64
MinGW经典,但貌似未维护,下面讨论使用MinGW-w64
项目名MinGW-w64中64非表示64位版,参考项目文件网站标题的"MinGW-w64 - for 32 and 64 bit Windows"。

项目介绍

MinGW: Windows上的运行环境包,以GCC编译器为核心,包括其运行环境(头文件、支持库),上下游工具链(Toolchains/Toolsets/binutils)。

有其他运行环境包,如Cygwin,以及基于MinGW的MSYS2
参考文末MinGW介绍摘要

下载

项目文件网站上的Download按钮为源码下载,Files标签子页面有编译完成的工具包(Toolchains)。
建议使用包。

"Files"页面含:

版本

当前工具包版本为"MinGW-W64 GCC-8.1.0"。
其中"MinGW-W64"为项目名,非表示仅有64位版,参见MinGW子版本节。
核心是"GCC"编译器,版本号为"8.1.0"。

区分"MinGW-W64"项目版本。
如路径Files/mingw-w64/mingw-w64-release下的项目文件打包"mingw-w64-v10.0.0.zip"。

子版本

正文中工具包版本下有不同配置组合的子版本
配置包含:系统架构、线程特性、调试特性。

系统架构

面向单个目标(single-target)系统。
x86_64仅能生成64位二进制文件,不能生成32位二进制文件;i686仅能生成32位二进制文件。

不同系统架构工具包解压出来的文件夹名有区分:"mingw64"、"mingw32",对应64位、32位操作系统。

线程特性、调试特性

参见MingGW64 版本区别于各版本说明 - PCYO

版本

当前为了兼容性,选择了i686-win32-sjlj,对应的文件目录路径为Toolchains targetting Win32

扩展参考:

安装配置

解压即可。
建议添加解压路径到环境变量PATH。以便cmd等系统shell,以及如Luarocks等工具从任意路径可访问到。

其中bin文件夹下有多个单文件编译器(GCC),每个编译器对应不同的配置,描述于文件名(mingw-w32-xxx-gcc.exe)中。
可以复制或链接所需配置的编译器,命名为"mingw32-gcc.exe"。
Luarocks限定使用此名称。
(VS中通过如"vcvars32.bat"进行以上配置)

类似"ming32-gcc",可以复制或链接mingw32-make,命名为makemingw32-make

主要功能

提醒,功能与工具包的系统架构有关。如dlltool区分32位、64位。


扩展参考

编译

compile,是build中的核心环节。(此处使用GCC编译器)
源文件(如.c),编译得到目标文件.o,object file),链接各目标文件,得到输出文件(如.exe/.dll/.lib)。
可编译-链接分步进行;或集中链接-编译一步到位,统称为编译
有大量参数,通常由make按makefile配置(参考CMake)执行。

详见:gcc "undefined reference to" 问题解决方法_边界流浪者的博客-CSDN博客_gcc编译undefined reference to(编译过程)

build

构建、生成。开发环境相关的系统流程(build system/build tool),常见"configure, make, make install"。核心环节为编译
另参考CMake

CMake

build的可选环节。
Windows平台下,配置项目,生成makefile(CMake:Create Makefile?)。
CMake工具的官网

CMake-gui.exeCMake MinGW makefile

  1. 选择项目源(source code)
  2. Configure扫描系统环境(如mingw-gcc、所需头文件)
  3. 解析出项目编译选项供选择
  4. 生成(Generate)指定编译环境(如MinGW)下的makefile。

Install-MinGW.pdf

适用于MinGW项目(而非MinGW-W64项目),包含:

MinGW介绍摘要

MinGW Shell

MinGW应用程序的用户交互环境。(环境内能访问到MinGW\bin)
可以是cmd,也可以来自MSYS2中的"msys.bat"(配置cmd环境,参考Install-MinGW.pdf)。

库转换

gendef lua53.dlldlltool -d lua53.def -D lua53.dll -l lua53.lib -k会由lua53.dll生成lua53.lib。应用参见Luarocks

Luarocks

LUA_LIBDIR配置的LIB会按lua.dll>lua.lib顺序尝试。(不包含.a
若使用lua.dll会导致"undefined reference"错误(准备开另一篇记录)。
而Lua源码LuaBinaries中提供的静态库仅包含.a(及头文件)。参考Lua编译
故需进行库转换

当Luarocks需要编译时会查找系统环境下的mingw-gcc

Lua编译

标签:gcc,CMake,lib,Windows,w64,MinGW,64,build
来源: https://www.cnblogs.com/RobertL/p/16345831.html