eclipse cdt 编译动态库,供msvc调用 -- 1.mingw msys 配置

本文介绍了如何在Windows上配置mingw和msys,以搭建GCC编译环境。首先,提供了mingw的下载地址和安装步骤,包括区分64位和32位版本,设置环境变量以及验证安装成功的方法。接着,讲解了msys的作用和下载途径,以及如何添加环境变量使其可执行。最后,指出这两个工具组合使用可以在Windows上进行GCC编译和Qt程序开发。

1. mingw 配置

下载地址:

http://www.mingw.org (官网)

https://sourceforge.net/projects/mingw/

https://sourceforge.net/projects/mingw-w64/

在线安装: 运行 mingw-get-setup.exe 

离线安装: 下载解压 https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/7.3.0/threads-posix/dwarf/i686-7.3.0-release-posix-dwarf-rt_v5-rev0.7z

-- 注意区分64位和32位,

设置环境变量
    将安装路径对应的bin目录添加到PATH环境变量中。
    假如安装路径是D:\tools\mingw,则将D:\tools\mingw\mingw64\bin 对应的bin目录添加到PATH环境变量中。

测试是否安装成功
    在命令提示符中输入: gcc -v  ,如果显示版本号则表示下载并安装成功

 

-- 到此,配置mingw-gcc 已经完成。

-- MinGW:即Minimalist GNU for Windows。它是一些头文件和函数库的集合,该集合允许人们在没有第三方动态链接库的情况下使用GCC(GNU Compiler C)产生Win32程序。

 

2. msys 配置

 官网:  http://www.mingw.org/wiki/msys

 msys 是一个运行在 windows下的unix 壳程序,带有shell和make工具等,因而可以使用gnu编译链编译运行程序。

    MSYS是一个小型的GNU环境,是一个通过将Linux源代码在Win32上编译而成的UNIX工作环境;类似于Cygwin,但是由于工作原理的不同,速度更快、体积更小、功能强大、便于携带; 使用MSYS可以取代商业的VC环境,同样开发出商业版权的程序而不受任何版权限制;

下载地址:

    MSYS-1.0.10.exe: MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net

    msys1.0.18.zip : Download msys1.0.18 from SourceForge.net

  -- 添加环境变量,即可执行

  -- 同时可以根据自我需求,添加工具集 https://sourceforge.net/projects/mingw/files/MSYS/

-- 个人喜好不同,喜欢非执行安装方式配置环境。。。同安装执行相同。。。有了这两个神器,就基本可以完成在windows 上使用gcc 编译程序了, 同时可以提供给 Qt 使用编译程序。

== == == ==

参考博文:  

MSYS2 5:Udacity Selt-Driving Car ND 环境配置 - 采男孩的小蘑菇 - 博客园

PowerShell 7 环境已加载 (版本: 7.5.2) PowerShell 7 环境已加载 (版本: 7.5.2) PS C:\Users\Administrator\Desktop> <# >> Libuv 完整修复脚本 >> #> PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> $ErrorActionPreference = 'Stop' PS C:\Users\Administrator\Desktop> Set-StrictMode -Version 3 PS C:\Users\Administrator\Desktop> PS C:\Users\Administrator\Desktop> try { >> $workingDir = "E:\PyTorch_Build\pytorch" >> $libuvBase = Join-Path $workingDir "third_party\libuv" >> $libDestDir = Join-Path $libuvBase "lib" >> >> # 1. 确保lib目录存在 >> New-Item -Path $libDestDir -ItemType Directory -Force -ErrorAction Stop | Out-Null >> >> # 2. 检查是否已有库文件 >> $existingLibs = Get-ChildItem -Path $libDestDir -Filter "uv*.lib" -File >> if ($existingLibs) { >> Write-Host "✅ 已找到库文件: $($existingLibs.FullName -join ', ')" -ForegroundColor Green >> $actualLibFile = $existingLibs[0].Name >> } >> else { >> Write-Host "未找到库文件,尝试从官方源下载..." -ForegroundColor Yellow >> >> # 3. 使用正确的下载URL >> $version = "1.51.0" >> $downloadUrl = "https://github.com/libuv/libuv/archive/refs/tags/v$version.zip" >> $tempZip = Join-Path $env:TEMP "libuv_source_$version.zip" >> >> # 下载源代码 >> Write-Host "正在下载Libuv源代码 (v$version)..." -ForegroundColor Cyan >> Invoke-WebRequest -Uri $downloadUrl -OutFile $tempZip -UseBasicParsing >> >> # 创建临时目录并解压 >> $tempExtract = Join-Path $env:TEMP "libuv_extract_$(Get-date -Format 'yyyyMMddHHmmss')" >> New-Item -ItemType Directory -Path $tempExtract -Force | Out-Null >> Expand-Archive -Path $tempZip -DestinationPath $tempExtract -Force >> >> # 查找并复制库文件(尝试构建目录) >> $buildDir = Join-Path $tempExtract "libuv-$version\out\build\x64-Release" >> $libFiles = Get-ChildItem -Path $buildDir -Recurse -Filter "uv*.lib" | >> Select-Object -First 1 >> >> if (-not $libFiles) { >> # 如果构建目录不存在,尝试手动构建 >> Write-Host "编译目录未找到,尝试构建Libuv..." -ForegroundColor Yellow >> $sourceDir = Join-Path $tempExtract "libuv-$version" >> $buildPath = Join-Path $sourceDir "build" >> New-Item -Path $buildPath -ItemType Directory -Force | Out-Null >> Set-Location $buildPath >> >> # 运行CMake生成构建文件 >> cmake .. -G "Visual Studio 17 2022" -A x64 >> cmake --build . --config Release >> >> $libFiles = Get-ChildItem -Path "$buildPath\Release" -Filter "uv*.lib" | >> Select-Object -First 1 >> } >> >> if ($libFiles) { >> Copy-Item -Path $libFiles.FullName -Destination $libDestDir -Force >> $actualLibFile = $libFiles.Name >> Write-Host "✅ 成功复制库文件: $actualLibFile" -ForegroundColor Green >> } >> else { >> throw "无法找到或生成库文件" >> } >> >> # 清理临时文件 >> Remove-Item $tempZip -Force -ErrorAction SilentlyContinue >> Remove-Item $tempExtract -Recurse -Force -ErrorAction SilentlyContinue >> } >> >> # 4. 更新CMake配置文件 >> $cmakeConfigPath = Join-Path $workingDir "cmake\Modules\FindLibuv.cmake" >> >> # 获取相对路径 >> $relativePath = $libuvBase.Replace($workingDir, "").TrimStart('\').Replace('\', '/') >> >> # 创建配置文件内容 >> $libuvConfig = @" >> # Libuv手动配置 >> set(LIBUV_FOUND ON) >> set(LIBUV_INCLUDE_DIRS "\${CMAKE_CURRENT_SOURCE_DIR}/$relativePath/include") >> set(LIBUV_LIBRARIES >> "\${CMAKE_CURRENT_SOURCE_DIR}/$relativePath/lib/$actualLibFile" >> ) >> "@ >> >> # 确保目录存在 >> $cmakeDir = Split-Path $cmakeConfigPath -Parent >> New-Item -Path $cmakeDir -ItemType Directory -Force -ErrorAction SilentlyContinue | Out-Null >> >> Set-Content -Path $cmakeConfigPath -Value $libuvConfig -Encoding UTF8 >> Write-Host "✅ 更新CMake配置文件: $cmakeConfigPath" -ForegroundColor Green >> >> # 5. 最终验证 >> Write-Host "`n验证安装结果:" -ForegroundColor Cyan >> >> # 检查关键文件是否存在 >> $requiredFiles = @( >> Join-Path $libuvBase "include\uv.h", >> Join-Path $libDestDir $actualLibFile, >> $cmakeConfigPath >> ) >> >> $validationResult = $requiredFiles | ForEach-Object { >> if (Test-Path $_) { >> "✅ 存在: $_" >> } >> else { >> "❌ 缺失: $_" >> } >> } >> >> $validationResult | ForEach-Object { Write-Host $_ } >> >> if ($validationResult -contains "❌") { >> throw "部分文件缺失,请检查修复过程" >> } >> else { >> Write-Host "`n✅ Libuv 安装修复完成!" -ForegroundColor Green >> } >> } >> catch { >> Write-Host "`n❌ 修复失败: $_" -ForegroundColor Red >> Write-Host "错误详细信息: $($_.Exception.Message)" -ForegroundColor Yellow >> } ✅ 已找到库文件: E:\PyTorch_Build\pytorch\third_party\libuv\lib\uv.lib ❌ 修复失败: The variable '$CMAKE_CURRENT_SOURCE_DIR' cannot be retrieved because it has not been set. 错误详细信息: The variable '$CMAKE_CURRENT_SOURCE_DIR' cannot be retrieved because it has not been set. PS C:\Users\Administrator\Desktop> "PowerShell 7 环境已加载 (版本: 7.5.2) PowerShell 7 环境已加载 (版本: 7.5.2) PS C:\Users\Administrator\Desktop> # 切换到Libuv目录 PS C:\Users\Administrator\Desktop> Set-Location "E:\PyTorch_Build\pytorch\third_party\libuv" PS E:\PyTorch_Build\pytorch\third_party\libuv> PS E:\PyTorch_Build\pytorch\third_party\libuv> # 创建构建目录 PS E:\PyTorch_Build\pytorch\third_party\libuv> New-Item -Path "build" -ItemType Directory -Force Directory: E:\PyTorch_Build\pytorch\third_party\libuv Mode LastWriteTime Length Name ---- ------------- ------ ---- da--- 2025/9/1 0:27 build PS E:\PyTorch_Build\pytorch\third_party\libuv> Set-Location "build" PS E:\PyTorch_Build\pytorch\third_party\libuv\build> PS E:\PyTorch_Build\pytorch\third_party\libuv\build> # 运行CMake生成构建文件 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> cmake .. -G "Visual Studio 17 2022" -A x64 -- summary of build options: Install prefix: C:/Program Files/libuv Target system: Windows Compiler: C compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64/cl.exe (MSVC) CFLAGS: /DWIN32 /D_WINDOWS -- Configuring done (0.1s) -- Generating done (0.2s) -- Build files have been written to: E:/PyTorch_Build/pytorch/third_party/libuv/build PS E:\PyTorch_Build\pytorch\third_party\libuv\build> PS E:\PyTorch_Build\pytorch\third_party\libuv\build> # 构建库文件 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> cmake --build . --config Release 适用于 .NET Framework MSBuild 版本 17.14.19+164abd434 1>Checking Build System Building Custom Rule E:/PyTorch_Build/pytorch/third_party/libuv/CMakeLists.txt uv.vcxproj -> E:\PyTorch_Build\pytorch\third_party\libuv\build\Release\uv.dll Building Custom Rule E:/PyTorch_Build/pytorch/third_party/libuv/CMakeLists.txt uv_a.vcxproj -> E:\PyTorch_Build\pytorch\third_party\libuv\build\Release\libuv.lib Building Custom Rule E:/PyTorch_Build/pytorch/third_party/libuv/CMakeLists.txt uv_run_benchmarks_a.vcxproj -> E:\PyTorch_Build\pytorch\third_party\libuv\build\Release\uv_run_benchmarks_a.exe Building Custom Rule E:/PyTorch_Build/pytorch/third_party/libuv/CMakeLists.txt uv_run_tests.vcxproj -> E:\PyTorch_Build\pytorch\third_party\libuv\build\Release\uv_run_tests.exe Building Custom Rule E:/PyTorch_Build/pytorch/third_party/libuv/CMakeLists.txt uv_run_tests_a.vcxproj -> E:\PyTorch_Build\pytorch\third_party\libuv\build\Release\uv_run_tests_a.exe Building Custom Rule E:/PyTorch_Build/pytorch/third_party/libuv/CMakeLists.txt PS E:\PyTorch_Build\pytorch\third_party\libuv\build> PS E:\PyTorch_Build\pytorch\third_party\libuv\build> # 复制生成的库文件 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> Copy-Item "Release\uv.lib" "..\lib\" -Force PS E:\PyTorch_Build\pytorch\third_party\libuv\build> # 更新CMake配置文件 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> $cmakeConfigPath = "E:\PyTorch_Build\pytorch\cmake\Modules\FindLibuv.cmake" PS E:\PyTorch_Build\pytorch\third_party\libuv\build> $newContent = @' >> set(LIBUV_FOUND ON) >> set(LIBUV_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/third_party/libuv/include") >> set(LIBUV_LIBRARIES >> "${CMAKE_CURRENT_SOURCE_DIR}/third_party/libuv/lib/uv.lib" >> ) >> '@ PS E:\PyTorch_Build\pytorch\third_party\libuv\build> PS E:\PyTorch_Build\pytorch\third_party\libuv\build> Set-Content -Path $cmakeConfigPath -Value $newContent -Encoding UTF8 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> Write-Host "✅ CMake配置文件已更新" -ForegroundColor Green ✅ CMake配置文件已更新 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> # 最终验证脚本 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> $workingDir = "E:\PyTorch_Build\pytorch" PS E:\PyTorch_Build\pytorch\third_party\libuv\build> $libuvBase = Join-Path $workingDir "third_party\libuv" PS E:\PyTorch_Build\pytorch\third_party\libuv\build> PS E:\PyTorch_Build\pytorch\third_party\libuv\build> # 验证包含文件 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> $headerStatus = if (Test-Path "$libuvBase\include\uv.h") {"✅ 存在"} else {"❌ 缺失"} PS E:\PyTorch_Build\pytorch\third_party\libuv\build> Write-Host "uv.h: $headerStatus" -ForegroundColor $(if ($headerStatus -eq "✅ 存在") {"Green"} else {"Red"}) uv.h: ✅ 存在 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> PS E:\PyTorch_Build\pytorch\third_party\libuv\build> # 验证库文件 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> $libFiles = Get-ChildItem -Path "$libuvBase\lib" -Filter "uv*.lib" -File PS E:\PyTorch_Build\pytorch\third_party\libuv\build> $libStatus = if ($libFiles) {"✅ 找到 $($libFiles.Count) 个库文件"} else {"❌ 缺失库文件"} PropertyNotFoundException: The property 'Count' cannot be found on this object. Verify that the property exists. PS E:\PyTorch_Build\pytorch\third_party\libuv\build> Write-Host "库文件: $libStatus" -ForegroundColor $(if ($libFiles) {"Green"} else {"Red"}) 库文件: ✅ 找到 个库文件 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> if ($libFiles) { >> Write-Host "库文件名: $($libFiles.Name)" -ForegroundColor Cyan >> } 库文件名: uv.lib PS E:\PyTorch_Build\pytorch\third_party\libuv\build> PS E:\PyTorch_Build\pytorch\third_party\libuv\build> # 验证CMake配置 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> $cmakeConfigPath = Join-Path $workingDir "cmake\Modules\FindLibuv.cmake" PS E:\PyTorch_Build\pytorch\third_party\libuv\build> $cmakeStatus = if (Test-Path $cmakeConfigPath) {"✅ 存在"} else {"❌ 缺失"} PS E:\PyTorch_Build\pytorch\third_party\libuv\build> Write-Host "CMake配置: $cmakeStatus" -ForegroundColor $(if ($cmakeStatus -eq "✅ 存在") {"Green"} else {"Red"}) CMake配置: ✅ 存在 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> PS E:\PyTorch_Build\pytorch\third_party\libuv\build> # 显示配置内容 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> if (Test-Path $cmakeConfigPath) { >> Write-Host "`nCMake配置内容:" -ForegroundColor Cyan >> Get-Content $cmakeConfigPath >> } CMake配置内容: set(LIBUV_FOUND ON) set(LIBUV_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/third_party/libuv/include") set(LIBUV_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/third_party/libuv/lib/uv.lib" ) PS E:\PyTorch_Build\pytorch\third_party\libuv\build> # 查看可用生成器 PS E:\PyTorch_Build\pytorch\third_party\libuv\build> cmake -G CMake Error: No generator specified for -G Generators * Visual Studio 17 2022 = Generates Visual Studio 2022 project files. Use -A option to specify architecture. Visual Studio 16 2019 = Generates Visual Studio 2019 project files. Use -A option to specify architecture. Visual Studio 15 2017 = Generates Visual Studio 2017 project files. Use -A option to specify architecture. Visual Studio 14 2015 = Generates Visual Studio 2015 project files. Use -A option to specify architecture. Borland Makefiles = Generates Borland makefiles. NMake Makefiles = Generates NMake makefiles. NMake Makefiles JOM = Generates JOM makefiles. MSYS Makefiles = Generates MSYS makefiles. MinGW Makefiles = Generates a make file for use with mingw32-make. Green Hills MULTI = Generates Green Hills MULTI files (experimental, work-in-progress). Unix Makefiles = Generates standard UNIX makefiles. Ninja = Generates build.ninja files. Ninja Multi-Config = Generates build-<Config>.ninja files. Watcom WMake = Generates Watcom WMake makefiles. CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files (deprecated). CodeBlocks - NMake Makefiles = Generates CodeBlocks project files (deprecated). CodeBlocks - NMake Makefiles JOM = Generates CodeBlocks project files (deprecated). CodeBlocks - Ninja = Generates CodeBlocks project files (deprecated). CodeBlocks - Unix Makefiles = Generates CodeBlocks project files (deprecated). CodeLite - MinGW Makefiles = Generates CodeLite project files (deprecated). CodeLite - NMake Makefiles = Generates CodeLite project files (deprecated). CodeLite - Ninja = Generates CodeLite project files (deprecated). CodeLite - Unix Makefiles = Generates CodeLite project files (deprecated). Eclipse CDT4 - NMake Makefiles = Generates Eclipse CDT 4.0 project files (deprecated). Eclipse CDT4 - MinGW Makefiles = Generates Eclipse CDT 4.0 project files (deprecated). Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files (deprecated). Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files (deprecated). Kate - MinGW Makefiles = Generates Kate project files (deprecated). Kate - NMake Makefiles = Generates Kate project files (deprecated). Kate - Ninja = Generates Kate project files (deprecated). Kate - Ninja Multi-Config = Generates Kate project files (deprecated). Kate - Unix Makefiles = Generates Kate project files (deprecated). Sublime Text 2 - MinGW Makefiles = Generates Sublime Text 2 project files (deprecated). Sublime Text 2 - NMake Makefiles = Generates Sublime Text 2 project files (deprecated). Sublime Text 2 - Ninja = Generates Sublime Text 2 project files (deprecated). Sublime Text 2 - Unix Makefiles = Generates Sublime Text 2 project files (deprecated). PS E:\PyTorch_Build\pytorch\third_party\libuv\build> PS E:\PyTorch_Build\pytorch\third_party\libuv\build> # 使用正确的生成器,例如: PS E:\PyTorch_Build\pytorch\third_party\libuv\build> cmake .. -G "Visual Studio 16 2019" -A x64 CMake Error: Error: generator : Visual Studio 16 2019 Does not match the generator used previously: Visual Studio 17 2022 Either remove the CMakeCache.txt file and CMakeFiles directory or choose a different binary directory. PS E:\PyTorch_Build\pytorch\third_party\libuv\build> "
最新发布
09-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值