Режим ручного большого пальца: размер кода не уменьшается
-
29-09-2019 - |
Вопрос
Ребята, у меня есть проект, который я собрал для процессора Arm Cortex-A8. Я использую GCC, чтобы сделать это. В настоящее время размер моего исполняемого файла составляет 220,1 КБ. Теперь я изменяю свой makefile и добавляю флаг -mthumb
, линия Makefile выглядит как это -
gcc -mcpu=cortex-a8 -mthumb -marm -mfloat-abi=softfp -mfpu=neon
Я делаю это изменения во всех своих макияжах, и я строю свой проект, но исполняемый файл, который я наконец -то по -прежнему остается 220,1 кб.
Я сделал еще одно изменение в свою командную строку, я добавил опцию -mthumb -interwork
gcc -mcpu=cortex-a8 -mthumb -mthumb-interwork -marm -mfloat-abi=softfp -mfpu=neon
Еще раз я получаю один и тот же исполняемый файл 220,1 КБ. Я что -нибудь упускаю во время этого?
Я написал небольшую программу, чтобы найти самые маленькие из двух чисел, и я составил его, используя следующую командную строку
gcc main.c -o main
Я получаю исполняемый файл 8,5 кб
Далее я делаю
gcc -mthumb main.c -o main
Я все еще получаю исполняемый 8,5 кб.
Что здесь здесь?
Я сделал А. cat /proc/cpuinfo
Чтобы увидеть, действительно ли большой палец поддерживается моим процессором, и я вижу, что он действительно поддерживается. Я получил -
Processor: ARMv7 Processor rev 5 (v7l)
Features: swp half thumb fastmult vfp edsp neon vfpv3
....
....
Решение
Я думаю, -Марм означает, что у вас есть рука без большого пальца, попробуйте удалить -марм.
Другие советы
Трудно сказать, не имея фактического кода, но у меня есть пара предложений.
- Включить оптимизацию. (например, -O3 -Запортные разделы -FData-разделы)
- Стрите исполняемый файл, чтобы убедиться, что информация отладки не учитывается.
- Проверьте фактический размер кода (.Text), а не размер файла. Может быть, есть некоторые прокладки. Вы можете использовать objdump для этого.
- Сбросьте код сборки (переключатель -s) и убедитесь, что он на самом деле дает инструкции ARM в одном случае, а большой палец в другом.
С некоторыми компиляторами большой палец - по умолчанию при компиляции для ARMV7. Вы уверены, что ваш первоначальный исполняемый файл не был создан для большого пальца?
Попробуйте построить с -MNO -THUMB и посмотрите, увеличивается ли размер кода.