如何链接大型C ++ - Eclipse中的项目

时间:2017-08-21 10:25:15

标签: c++ eclipse gcc linker

我目前正在研究一个非常大的C ++ - 我公司的项目。我的工作是为项目的某些部分构建代码生成器。该项目在基于Eclipse的Kinetis Design Studio 3.0.0中进行管理。使用的编译器是GNU ARM C / C ++交叉编译器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 ++的限制 - 链接器,但我相信这可能是问题所在。编译器创建了大约160个Object文件,但我不确定它们是否都在最后一个链接阶段使用。我不是make的专家,也不是Eclipse处理这些东西的专家。但是,如果我的猜测是正确的:有没有办法告诉链接器使用所有的Object文件?

编辑: 我重命名了包含大多数文件的文件夹。链接器命令缩短了,现在它工作正常。我可能要么使用较短的文件名,要么将一些.cpp文件打包在一起。

1 个答案:

答案 0 :(得分:0)

您还可以重新组织项目结构,并将源切换为在构建过程结束时链接在一起的一堆静态库。这将有助于减少最终连接命令的大小。