Я создаю шестнадцатеричный файл для запуска на ARM-процессоре, который я хочу поддерживать ниже 32K. В настоящее время это намного больше, и я задавался вопросом, может ли кто-нибудь посоветовать, какой лучший подход к его уменьшению?
Вот что я сделал до сих пор
- Таким образом, я запустил "размер" на нем, чтобы определить, насколько величен шестнадцатеричный файл.
- Затем "размер" снова, чтобы увидеть, насколько большой каждый из объектных файлов является этой ссылкой для создания шестнадцатеричных файлов. Похоже, что большая часть размера поступает из внешних библиотек.
- Затем я использовал "readelf", чтобы увидеть, какие функции занимают большую часть памяти.
- Я просмотрел код, чтобы узнать, могу ли я устранить вызовы этих функций.
Здесь, где я застрял, есть некоторые функции, которые я не вызываю напрямую (например, _vfprintf), и я не могу найти то, что называет это, поэтому я могу удалить вызов (как мне кажется, он мне не нужен).
Итак, каковы следующие шаги?
Ответ на ответы:
- Как я вижу, существуют функции, которые занимают много памяти. Однако я не могу найти то, что называется.
- Я хочу опустить эти функции (если возможно), но я не могу найти, что их зовут! Может быть вызвано из любого количества функций библиотеки, которые я предполагаю.
- Я думаю, компоновщик работает по своему желанию, он включает только соответствующие файлы библиотеки. Откуда вы знаете, включены ли только соответствующие функции? Можете ли вы установить флаг или что-то в этом роде?
- Я использую GCC