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

编译MinGW-w64(静态+共享模式)时出现-lgcc_s找不到错误求助

编译MinGW-w64时静态+共享模式下出现-lgcc_s找不到的问题

我在Windows系统上用Msys2编译MinGW-w64,已下载MinGW-w64与GCC-12.2.0源码,按照官方编译指南步骤操作。静态编译可成功生成正常程序,但同时启用静态与共享模式编译后,测试HelloWorld程序时出现如下错误:

c:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/12.2.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lgcc_s: No such file or directory
c:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/12.2.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lgcc_s: No such file or directory
collect2.exe: error: ld returned 1 exit status

我的配置命令如下:

../src/gcc/configure --prefix=/mingw32 --with-sysroot=/mingw32 --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --with-pkgversion='Built by Dahy Allam Ali' --enable-languages=c,c++ --enable-shared --enable-static --enable-libstdcxx-filesystem-ts --enable-libstdcxx-time --enable-threads=win32 --enable-plugins --enable-libatomic --enable-fully-dynamic-string --enable-checking=release --enable-version-specific-runtime-libs --enable-lto --enable-bootstrap --disable-multilib --disable-win32-registry --disable-sjlj-exceptions --disable-libstdcxx-pch --disable-libstdcxx-verbose --disable-rpath --disable-nls --disable-werror --with-arch=i686 --with-gnu-ld --with-gnu-as --with-boot-ldflags=-static-libstdc++ --with-stage1-ldflags=-static-libstdc++

解决方法

1. 检查共享库是否生成

先确认编译完成后,/mingw32/lib/gcc/i686-w64-mingw32/12.2.0/目录下是否存在libgcc_s.dll.a或libgcc_s.a文件。如果缺失,说明共享版本的libgcc未被正确编译生成。

2. 调整配置参数

  • 移除--enable-version-specific-runtime-libs:该参数会将运行时库安装到版本专属目录,可能导致链接器无法定位共享库。
  • 确保--enable-shared在--enable-static之前:部分场景下参数顺序会影响编译逻辑,优先启用共享模式有助于生成完整的共享库文件。

修改后的配置命令示例:

../src/gcc/configure --prefix=/mingw32 --with-sysroot=/mingw32 --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --with-pkgversion='Built by Dahy Allam Ali' --enable-languages=c,c++ --enable-shared --enable-static --enable-libstdcxx-filesystem-ts --enable-libstdcxx-time --enable-threads=win32 --enable-plugins --enable-libatomic --enable-fully-dynamic-string --enable-checking=release --enable-lto --enable-bootstrap --disable-multilib --disable-win32-registry --disable-sjlj-exceptions --disable-libstdcxx-pch --disable-libstdcxx-verbose --disable-rpath --disable-nls --disable-werror --with-arch=i686 --with-gnu-ld --with-gnu-as --with-boot-ldflags=-static-libstdc++ --with-stage1-ldflags=-static-libstdc++

3. 手动复制共享库到指定路径

如果编译后libgcc_s.dll.a存在于编译临时目录,可手动将其复制到/mingw32/lib/gcc/i686-w64-mingw32/12.2.0/和/mingw32/i686-w64-mingw32/lib/目录,同时将libgcc_s.dll复制到/mingw32/bin/目录。

4. 禁用bootstrap重新编译

--enable-bootstrap的多阶段编译可能导致共享库生成不完整,尝试移除该参数后重新配置编译:

../src/gcc/configure --prefix=/mingw32 --with-sysroot=/mingw32 --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --with-pkgversion='Built by Dahy Allam Ali' --enable-languages=c,c++ --enable-shared --enable-static --enable-libstdcxx-filesystem-ts --enable-libstdcxx-time --enable-threads=win32 --enable-plugins --enable-libatomic --enable-fully-dynamic-string --enable-checking=release --enable-version-specific-runtime-libs --enable-lto --disable-bootstrap --disable-multilib --disable-win32-registry --disable-sjlj-exceptions --disable-libstdcxx-pch --disable-libstdcxx-verbose --disable-rpath --disable-nls --disable-werror --with-arch=i686 --with-gnu-ld --with-gnu-as --with-boot-ldflags=-static-libstdc++ --with-stage1-ldflags=-static-libstdc++

内容的提问来源于stack exchange,提问作者Mr. Green

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:03:07