为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决 mingw-w64 MSVCRT 依赖问题

如何解决 mingw-w64 MSVCRT 依赖问题

Go
慕沐林林 2023-08-07 10:36:35
我正在使用 Go1.12 + msys2/mingw-w64(9.2.0) 构建 golang 项目,它显示错误:D:\Go\pkg\tool\windows_amd64\link.exe: running gcc failed: exit status 1D:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o: in function `pre_c_init':E:/mingwbuild/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:146: undefined reference to `__p__fmode'D:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o: in function `__tmainCRTStartup':E:/mingwbuild/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:290: undefined reference to `_set_invalid_parameter_handler'D:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: E:/mingwbuild/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:299: undefined reference to `__p__acmdln'D:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-merr.o): in function `_matherr':E:/mingwbuild/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/merr.c:46: undefined reference to `__acrt_iob_func'D:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-pseudo-reloc.o): in function `__report_error':经过一番研究,我确信这是 mingw64 的 msvcrt 兼容性问题。我知道有这样的解决方法:未解析的外部符号 __imp__fprintf 和 __imp____iob_func,SDL2 但这并不能解决我的所有问题。我尝试链接库:LDFLAGS: -L%filepath% -llegacy_stdio_definitions,没有任何变化。是否有补丁可以修复它,或者我是否必须构建我的自定义版本的 mingw64?
查看完整描述

1 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

是的,Mingw64 使用 msvcrt。

以下是一些有助于解决 Mingw64 和 msvcrt 之间的依赖问题的提示。主要目标是让编译器加载正确版本的 MSVCRT 库系列。

1.更新Mingw64。

2.检查Mingw64\include_mingw.h(或x86_64-w64-mingw32\include)中的MSVCRT_VERSION,确保版本号与您的Windows版本匹配,或修改它。

3.看看链接器选项,如“#cgo LDFLAGS: -Lxxx”,不要弄乱库路径。删除任何不必要的库路径设置,让链接器自己找到库。

  1. 确保所有内容都是使用相同的库构建的。


查看完整回答
反对 回复 2023-08-07
  • 1 回答
  • 0 关注
  • 241 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信