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

在Ubuntu16.04交叉编译x86_64-w64-mingw32版GCC6.3.0报错求助

在Ubuntu 16.04交叉编译x86_64-w64-mingw32版GCC 6.3.0的错误解决思路

问题背景

在Ubuntu 16.04系统中为x86_64-w64-mingw32目标交叉编译GCC 6.3.0,执行以下步骤后编译报错:

执行步骤

  • 0. 获取源码文件
    wget "http://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/mingw-w64-v5.0.1.tar.bz2"
    wget  "https://ftpmirror.gnu.org/binutils/binutils-2.27.tar.gz"
    wget "https://ftpmirror.gnu.org/gcc/gcc-6.3.0/gcc-6.3.0.tar.bz2"
    
  • 1. 编译binutils-2.27
    ./configure --target=x86_64-w64-mingw32 --enable-targets=x86_64-w64-mingw32 --prefix=/home/user/gcc_mingw64/build --with-sysroot=/home/user/gcc_mingw64/build
    make
    make install
    
  • 2. 编译mingw-w64-v5头文件
    mkdir build-headers
    cd build-headers/
    ../mingw-w64-headers/configure --host=x86_64-w64-mingw32 --prefix=/home/user/gcc_mingw64/build/x86_64-w64-mingw32
    make
    make install
    
  • 3. 创建库软链接
    ln -s /home/user/gcc_mingw64/build/x86_64-w64-mingw32 mingw
    ln -s /home/user/gcc_mingw64/build/x86_64-w64-mingw32/lib lib64
    
  • 4. 编译gcc-6.3.0
    ./contrib/download_prerequisites
    mkdir build_gcc
    cd build_gcc
    ../configure --target=x86_64-w64-mingw32 --enable-targets=all --disable-werror --disable-shared --enable-version-specific-runtime-libs --with-ld=/home/user/gcc_mingw64/build/bin/x86_64-w64-mingw32-ld --with-as=/home/user/gcc_mingw64/build/bin/x86_64-w64-mingw32-as --enable-languages=c,c++,fortran --prefix=/home/user/gcc_mingw64/build --with-sysroot=/home/user/gcc_mingw64/build
    make
    make install
    

错误信息

checking for ld that supports -Wl,--gc-sections... configure: error: Link tests are not allowed after GCC_NO_EXECUTABLES.
Makefile:11457: recipe for target 'configure-target-libstdc++-v3' failed
make[1]: *** [configure-target-libstdc++-v3] Error 1

解决思路

1. 调整GCC配置参数

  • 移除--disable-shared参数:交叉编译场景下禁用共享库会破坏libstdc++-v3的配置逻辑,导致链接测试触发限制。修改后的configure命令:
    ../configure --target=x86_64-w64-mingw32 --enable-targets=all --disable-werror --enable-version-specific-runtime-libs --with-ld=/home/user/gcc_mingw64/build/bin/x86_64-w64-mingw32-ld --with-as=/home/user/gcc_mingw64/build/bin/x86_64-w64-mingw32-as --enable-languages=c,c++,fortran --prefix=/home/user/gcc_mingw64/build --with-sysroot=/home/user/gcc_mingw64/build
    
  • 若问题未解决,追加--disable-libstdcxx-pch参数,跳过预编译头的生成逻辑,避免触发链接测试。

2. 验证sysroot与链接路径

  • 检查软链接有效性:
    ls -l /home/user/gcc_mingw64/build/mingw
    ls -l /home/user/gcc_mingw64/build/lib64
    
    确认链接指向的x86_64-w64-mingw32目录存在且内容完整。
  • 检查sysroot下的头文件与基础库:确认/home/user/gcc_mingw64/build/x86_64-w64-mingw32/include和lib目录包含完整的mingw-w64头文件与库文件。

3. 补全mingw-w64库编译

之前仅编译了mingw-w64的头文件,缺少crt库会导致GCC编译libstdc++时依赖不足。回到mingw-w64源码目录,执行以下步骤编译crt库:

mkdir build-crt
cd build-crt
../configure --host=x86_64-w64-mingw32 --prefix=/home/user/gcc_mingw64/build/x86_64-w64-mingw32
make
make install

4. 清理缓存后重新构建

删除GCC的编译目录,重新执行配置与编译:

rm -rf build_gcc
mkdir build_gcc
cd build_gcc
# 执行修改后的configure命令
make

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:15:38