工具/软件:TI C/C++编译器
我正在C2000和MSP430中开发应用,并注意到编译器/链接器的工作方式有显著的不同。 在MSP430中,如果某个功能不是从main或ISR调用的,那么它不会像预期的那样包含在二进制文件中。 但是,在编译C2000应用程序时,在任何.c文件中定义的所有函数(和全局)都包含在最终程序中,从而产生一个巨大的二进制文件。
我试过编译器16.9 .1,16.9 .3和17.3 .0,没有区别。 在所有情况下,当我向主. c文件添加一个伪函数时,例如:
void opt_test (void) { int bla = 0; 如果(bla++) 返回; }
然后.text的大小增加,opt_test在.map文件中提到。 我正在使用-O3 (由于MotorWare对F2.8027万的限制,我无法使用-O4)和-MF 5 (优化大小)进行编译。
编辑:我使用优化助手测试了-MF的各种优化设置,所有选项都产生了相同的二进制大小,这可能是问题所在? 各种-O设置确实会按预期影响二进制大小。
此致,
Giannis