这个问题通常出现在 Windows 平台上,因为 32 位系统需要使用 libmoldname 库文件支持 CGO 功能。而在 64 位系统上,CGO 默认使用的是 libmsvcrt 库文件。
解决方法如下:
确认你已经安装了 MinGW-w64 工具链或者 TDM-GCC 工具链。
确认你的系统 PATH 环境变量中包含了正确的 GCC 目录路径。
在编译命令中添加 “-static-libgcc -static-libstdc++” 和 “-extldflags=-lmoldname” 选项。
例如,在 Windows 平台上,你可以使用以下命令进行编译:
GOARCH=386 CGO_ENABLED=1 CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ \
go build -a -v -x -ldflags '-extldflags "-static -lmoldname" -s -w' .
其中,“-extldflags=-lmoldname”表示指定链接器使用 libmoldname 库文件;“-static-libgcc”和“-static-libstdc++”选项则表示静态链接 libgcc 和 libstdc++ 库文件,避免运行时缺少相关库文件。