You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Gorm与SQLite驱动时遭遇MinGW链接错误求助

问题描述

我已安装Gorm及SQLite驱动,安装命令如下:

go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite

代码配置如下:

package main

import (
    "fmt"

    "gorm.io/driver/sqlite"
    "gorm.io/gorm"
)

type Product struct {
    gorm.Model
    id    uint
    code  string
    Price int
}

func main() {
    db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{})
    fmt.Println("database created ...")
    if err != nil {
        panic("Failed to connect database ...")
    }
    db.AutoMigrate(&Product())
}

运行时出现如下错误,推测与MinGW相关,不清楚需哪些配置才能成功运行代码:

# oop
C:\Program Files (x86)\Go\pkg\tool\windows_386\link.exe: running gcc failed: exit status 1
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/libmingwex.a when searching for -lmingwex
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib\libmingwex.a when searching for -lmingwex
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/libmingwex.a when searching for -lmingwex
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lmingwex
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/libmingwex.a when searching for -lmingwex
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/libmingw32.a when searching for -lmingw32
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib\libmingw32.a when searching for -lmingw32
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/libmingw32.a when searching for -lmingw32
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lmingw32
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/lib/libmingw32.a when searching for -lmingw32
collect2.exe: error: ld returned 1 exit status

解决方案

1. 匹配Go与MinGW的架构

错误显示当前Go是32位版本(windows_386),但MinGW是64位版本(x86_64-w64-mingw32),架构不兼容导致链接器找不到对应库。解决方式二选一:

  • 卸载32位Go,安装64位版本;
  • 卸载64位MinGW,安装32位版本。

2. 配置MinGW环境变量

将MinGW的bin目录(例如C:\mingw\bin)添加到系统环境变量PATH的最前端,确保系统优先调用正确版本的gcc工具。

3. 修正代码字段可见性

Go中私有字段(小写开头)无法被GORM识别,需将Product结构体的字段改为大写开头:

type Product struct {
    gorm.Model
    ID    uint
    Code  string
    Price int
}

同时将db.AutoMigrate(&Product())改为db.AutoMigrate(&Product{}),语法更规范。

4. 确保MinGW组件完整

重新安装MinGW时,勾选mingw32-base和mingw32-gcc-g++组件,保证libmingwex.a、libmingw32.a等必要链接库完整。

内容的提问来源于stack exchange,提问作者RikoTheSeeker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:50:40