Недавно я столкнулся с проблемой при попытке связать мою программу. Это сообщение .text
не может поместиться в указанной области памяти. Очевидно, что исходный код становится слишком большим, чтобы его можно было связать в ограниченной области памяти.
Теперь я хочу проанализировать, какой файл вносит наиболее существенный вклад в раздел «.text», чтобы можно было выполнить последующую оптимизацию кода. выполнила. Я пробовал много способов, но не смог.
nm -s output.elf
дает размер каждого символа, но не группируйте символ под каждым исходным файлом. nm -s file.obj
go через каждый объектный файл не работает, потому что указано -fdata-section
-ffunction-section
-Wl
, поэтому не все содержимое в объектном файле будет связано с окончательным выводом readelf -s output.elf
дает информацию из файл в файл, но это просто список символов под каждым файлом и их размер. Сценарий может быть написан для суммирования всего размера в файле, но общее значение кажется неправильным, очевидная ошибка здесь - некоторые символы могут указывать на одну и ту же область памяти, поэтому одна и та же область памяти может быть вычислена много раз.
Когда ссылка g cc выполняет свою работу, она должна знать все детали того, что извлечено из объектного файла и помещено в секцию вывода, но, похоже, она не предоставляет переключателя для генерации детали. отчет (или я что-то упустил?)
Есть ли какой-нибудь инструмент, который может выполнить эту работу?