【发布时间】:2018-01-29 09:20:33
【问题描述】:
我目前正在我的公司从事一个非常大的 C++ 项目。我的工作是为项目的某些部分构建代码生成器。该项目在基于 Eclipse 的 Kinetis Design Studio 3.0.0 中进行管理。使用的编译器是 GNU ARM C/C++ Cross Compiler 1.12.1
现在我的问题是:随着我的生成器创建的文件数量增加,突然出现一条错误消息:
arm-none-eabi-g++: error: ./00_Hmi/FontsHandler/SEGE_UI_11B.o: No such file or directory
make: *** [CDSB_AutoGen.elf] Error 1
当链接器尝试将所有目标文件链接到最终二进制文件时,会弹出该消息。链接器找不到的文件确实存在。 如果我从构建中排除一些文件,错误就会消失(显然我必须修复一些包含和依赖于这些文件的部分代码)。我排除哪些文件似乎并不重要。我可以包含所有生成的文件并排除其他一些文件。我发现here 链接器有最大数量的可以在命令行中传递的目标文件。我找不到 GCC C++-Linker 的限制,但我相信这可能是问题所在。编译器创建了大约 160 个目标文件,但我不确定它们是否都用于最后的链接阶段。我不是制作专家或 Eclipse 如何处理这些事情的专家。但如果我的猜测是正确的:有没有办法告诉链接器使用所有的对象文件?
编辑: 我重命名了包含大部分文件的文件夹。链接器命令变得更短了,现在可以正常工作了。我可能不得不使用较短的文件名或将一些 .cpp 文件打包在一起。
【问题讨论】:
-
eclipse标签在这里是否相关?
-
我猜...因为 eclipse 管理 g++ 调用。还是我错了?