【问题标题】:Code::Blocks with MinGW linking failCode::Blocks with MinGW 链接失败
【发布时间】:2014-08-29 13:01:56
【问题描述】:

我在 32 位 Windows 7 上使用 Code::Blocks(13.12 版)和 MinGW(4.7.1 版)。

在尝试构建我的项目时,编译步骤后出现以下错误:

Execution of 'mingw32-g++.exe  -o cb_dlv.exe
...huge list of *.o files...
in 'D:\Workspace\cb_dlv' failed.

工具链可执行文件当然没有问题,因为我的其他项目编译和链接都很好,所有工具都在正确的位置。从cmd 可以看到mingw32-g++.exe,所以PATH 变量没有问题。清洁工作区似乎也没有任何帮助。我已经尝试移动项目文件以使路径中没有空格,但它也没有帮助。以及重新打开/重新安装/重新启动。

有什么建议吗?

【问题讨论】:

  • 不确定,但我认为当您不在标准位置安装 CB 时会发生这种情况。在菜单的某个地方,您可以找到一个选项,它将搜索 mingw 位置,我认为之后它应该可以工作。很久以前我用过CB,如果我错了,请见谅。
  • CB 安装到默认目录,MinGW 位置设置并从 CB 中查看。正如我上面提到的, tolchain 可执行文件没有问题。

标签: c++ c linker mingw codeblocks


【解决方案1】:

既然我已经找到了解决办法,那就在这里。

主要问题是在 Windows 7 上,命令行长度的限制约为 32K 个字符。 MinGW 编译器和链接器在构建包含大量文件的项目时达到了该限制。这是 MinGW 使用的 Windows API 的基本限制。

解决方案:以任何你喜欢的方式缩短命令行:将一些文件合并为一个,将项目分成几个,重命名长名称的子目录等。

【讨论】:

    【解决方案2】:

    您是否已将项目设置为使用自定义 makefile?你的构建系统变量是什么? D:\Workspace\cb_dlv 中的目标文件是否可用? 这是编译日志的唯一输出还是之前有其他输出? 您的项目的构建目标设置是否合理?

    您应该会在最后一个链接阶段发生之前看到构建系统日志,它正在将您的 c/c++ 文件编译为目标文件,例如:

    mingw32-g++.exe -c D:\Workspace\cb_dlv\file.c -o D:\Workspace\cb_dlv\obj\Debug\file.o
    

    请详细说明这个问题,我也许可以帮助你。

    【讨论】:

    • 不,我没有使用自定义 makefile,只是常用的 Build/Rebuild Code::Blocks 选项。
    • 对象文件已生成并可用。我正在使用以下选项(编译日志片段)进行编译:mingw32-g++.exe -w -nostdinc -nostdinc++ ...some internal defines... ...list of headers' directories... -ID: -c "D:\Workspace\dlv\Stack.cpp" -o "obj\Stack.o"。使用 -nostdinc 和 -nostdinc++ 的原因是我正在尝试编译一个具有自己的标准头实现的库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    相关资源
    最近更新 更多