Определение пространства, используемого библиотечными функциями в C - PullRequest
0 голосов
/ 19 марта 2012

У меня есть куча кода, который мне нужно проанализировать, и я не знаю, как это сделать.У меня есть куча кода, который здесь и там использует математические функции из файла заголовка, который я включил, называется math.h, который поставляется с моей IDE.Меня просят посмотреть, сколько места используется, чтобы включить это.В частности, это компилятор, включающий все библиотечные функции или только те, которые мы используем.Там не создается объектный файл.Поэтому я думаю, что код библиотеки компилируется в отдельные файлы.Какие-нибудь идеи ловкого способа понять это?Я не могу просто закомментировать включения, потому что тогда код не будет соответствовать, и я не буду знать размер, и если я закомментирую все строки, которые используют математические функции, это не будет действительно представительным.

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

Код в файле заголовка добавляется в объектный файл .c, который вы используете, если в вашем заголовке есть определения функций, и на него просто ссылаются, если они являются просто объявлениями.Затем компоновщик найдет определение для каждого символа и поместит его в свой исполняемый файл, если вы используете динамическую компоновку, ОС получит определение во время выполнения.

0 голосов
/ 19 марта 2012

Вы можете использовать команду objdump для просмотра отдельных символов в ваших объектных файлах и необходимого им пространства.

Обратите внимание, что если вы не выполняете статическую компиляцию, библиотечные методы обычно не копируются всозданный вами двоичный файл, но на который ссылаются только (и вводят через динамический компоновщик, когда ваша программа загружена).

Поскольку math.h является частью стандартной библиотеки C, копия этой библиотеки в основном гарантируется всегданаходиться в памяти, поэтому дополнительные требования к памяти и пространству для динамического связывания минимальны.(Во время статической компоновки все символы, которые не требуются напрямую вашей программе, отбрасываются, и математические функции, как правило, не очень большие, поэтому их использование также должно быть довольно минимальным).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...