Как перечислить размер статических объявлений в объектном файле? - PullRequest
2 голосов
/ 12 июля 2011

Я пытаюсь уменьшить размер исполняемого файла (используя MINGW / GCC), найдя все большие статически объявленные массивы.Есть ли способ вывести список символов данных вместе с их совокупными размерами?Я просмотрел man-страницы для nm и objdump, но пока не вижу ничего полезного.

Thx.

Ответы [ 2 ]

7 голосов
/ 12 июля 2011

Используйте утилиту nm из GNU binutils с опцией --print-size (сокращенно -S).Например, чтобы найти 20 самых больших символов в объектном файле, сделайте следующее:

nm --print-size --size-sort objfile.o | tail -20
3 голосов
/ 12 июля 2011

Компоновщик может сгенерировать файл MAP, который предоставит эту информацию.

Если вы используете gcc для компиляции и компоновки, вы передаете компоновщику параметры компоновщика с помощью:

-Wl,<comma-separate-options-list>

Если вы вызываете ld напрямую, вы, очевидно, просто передаете параметры компоновщика.

Необходимая вам опция компоновщика:

-Map=<mapfilename>

Вы также можете использовать --cref, чтобы включить таблицу перекрестных ссылок вфайл карты.

...