Я создал некоторый код для симулятора и сейчас пытаюсь использовать бесплатный набор инструментов TI для кросс-компиляции с целью с 64 КБ nvram.Компилятор утверждает, что мой код примерно на 34 КБ больше, чем в ПЗУ:
(...) msp430-elf/bin/ld: region `ROM' overflowed by 33716 bytes
В другой строке написано, что он не может вписать поле .text
в выделенное ему пространство.Я не могу поверить, что мои добавления составляют 34 КБ, не говоря уже о том, что двоичные файлы переполняются на эту сумму.
- Файлы .o, которые мой код добавил в проект, составляют небольшую долю (200 КБ из 1,9 МБ) от общего объема проекта, и я вынул большое количество компонентов, которые были впроект для начала.
- Я уже передаю компилятору флаги
-Os -s
. - Новый код содержит около 100 символов строковых литералов.
- Мой код использует много функций
math.h
(фактически это единственная часть, которая выполняет арифметику с плавающей запятой), сделайте вызовна strtod
и позвоните на sprintf
Существуют ли какие-либо инструменты или методы для определения причин, по которым двоичные файлы становятся такими большими?