This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI C/C++编译器
您好!
我们(根据 TI 的建议)使用 gcc-arm-none-eabi-4_9-2015q3 linaro 工具来构建(编译和链接) ARM cortex A15内核(在 TDA2xx 上)。
我们在代码中定义了一些大型全局数组,这些数组被分配给特定段(attribute ((section...)),这些段被定义为 NoLoad 段。
结果的可执行文件(ELF 文件)大小很小、这与阵列非常大的事实相对应、因为段是空载段、因此它们不会进入映像文件。
问题是、我们注意到具有这些数组定义的源的目标文件的大小很大、并且编译器似乎使用对应于数组大小的零来填充目标文件、这会导致一个非常大的文件。
尽管这不会影响最终映像(ELF 文件)、但考虑到这些结果目标文件的大小、仍然存在很大的问题。
到目前为止、我无法找到更改此编译器行为的方法、如果您能帮助解决此问题、我将不胜感激。
(B.T.W -使用 TI 编译器工具(例如用于 M4内核)、我们在数组定义方式相同的情况下不会出现这种现象)
谢谢
家伙
谢谢
家伙
我可以重现问题。 我找不到一种方法来避免较大的目标文件大小。 因此、我向 Linaro 支持团队提出了一个问题、该团队提供此 GCC ARM 编译器。 不幸的是,没有公众对这个问题的看法。 当我得到响应时、我会将其发布在这里。
谢谢、此致、
乔治
感谢 Linaro 的同事提出此变通办法。 使该数组成为.bss 的子段。 例如..
int array[10000]__attribute__((section(".bss.array_section_name")));
对于可能关注此主题的其他人... 您可以对 TI ARM 编译器执行类似的操作。 但是,section 属性的字符串参数有轻微的差异...
int array[10000]__attribute__((section(".bss:array_section_name"));
请注意、在.bss 之后、有一个冒号(:)、而不是一个点(。) 。
谢谢、此致、
乔治