首页 文章

Code :: Blocks错误:ld返回1退出状态

提问于
浏览
2

我正在使用Code :: Blocks v 16.1.0.0以及它附带的MINGW . 链接器存在问题 . 我无法使用 #include "sth" 将单个标头/源文件链接到源文件 . 为了缩小问题,我的项目中只有1个源文件和1个头文件,但无论我使用什么文件和我尝试的选项,我都无法绕过这个错误 .

这是构建日志

-------------- Build: Debug in MISC (compiler: GNU GCC Compiler)---------------

gcc.exe -Wall -Wextra -Wall -g -std=c99  -c C:\Users\username\Documents\CodeBlocks\C\MISC\readFileByChars.c -o obj\Debug\readFileByChars.o
g++.exe -LC:\Users\username\Documents\CodeBlocks\C\MISC -o bin\Debug\MISC.exe obj\Debug\readFileByChars.o readFileByChars.h.gch   
readFileByChars.h.gch: file not recognized: File format not recognized
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 0 warning(s) (0 minute(s), 0 second(s))

这是工具链目录:

enter image description here

我之前没有任何程序运行实例 . 我也有MINGW独立工作(不在环境变量中包含它的bin文件夹,不要在构建期间混淆代码块),但是对于代码块,我包括安装附带的预先打包的代码块 . 当我单击选项链接我的项目中的头文件时,项目将无法构建(但如果我不链接文件,我如何构建我的应用程序?) . 我重复这个项目是空的,我只有一个 Headers ,只包含一个源文件 . 我在这里看到过关于此问题的其他类似问题,但他们的解决方案无效 . 帮助将不胜感激 . 谢谢 .

2 回答

  • 4

    链接器存在问题 . 我无法使用#include“sth”将单个头/源文件链接到源文件

    链接器没有问题 . 您无法链接头文件或源文件 . 您只能编译源文件(可能是 #include 头文件),以生成目标文件 .

    对于支持此概念的编译器, #include 可以是precompiled header file的头文件,受编译器特定的使用限制(尽管名称,但未编译预编译头文件:它不是目标文件) .

    链接器只能链接目标文件和动态库以生成可执行文件 . 它可以直接使用目标文件,也可以从静态库中提取它们 .

    您失败的链接命令:

    g++.exe -LC:\Users\username\Documents\CodeBlocks\C\MISC -o bin\Debug\MISC.exe obj\Debug\readFileByChars.o readFileByChars.h.gch
    

    表明您正在尝试链接预编译头 readFileByChars.h.gch . 链接器说:

    readFileByChars.h.gch: file not recognized: File format not recognized
    

    因为预编译头不是目标文件或静态或动态库 . 它不是链接器理解的东西 .

    更正项目选项,以便不再将 readFileByChars.h.gch 作为链接器输入传递 .

    据推测,您已经通过special steps在Code :: Blocks项目中生成预编译头 readFileByChars.h.gch . 如果您已正确地遵循该文档,那么您无需执行任何其他文档未提及的操作 . 您的其他项目选项不需要告诉编译器或链接器有关预编译头的任何信息 .

    根本没有必要使用预编译的头文件,正如您所看到的,它们的正确使用并非万无一失,而且是特定于编译器的 . 我建议你以普通的方式构建这个和其他项目,没有预编译的头文件,除非你面临阻塞性很长的编译时间,预编译的头文件可能会有用的缩减 .

  • 0

    这里我是如何解决这个问题的:1 . 如果你首先从项目退出代码块运行该文件 . 2.单独打开文件(不要打开codeblocks项目文件!)并运行 .

相关问题