Почему при компиляции программы на C получается такой длинный бинарный файл? - PullRequest
0 голосов
/ 23 сентября 2019

Я слышал, что когда компилятор компилирует код, он создает файл, содержащий инструкции, которые машина может выполнить.Согласно этому видео, простая программа, такая как int main(){ int i; i = 3; }, должна при компиляции создавать файл длиной всего несколько байтов.Так почему же clang компилирует это в файл длиной несколько килобайт?

1 Ответ

0 голосов
/ 23 сентября 2019

Это, вероятно, связано с некоторыми #include операторами, которые статически связывают библиотеки с вашим исполняемым файлом, или компилятором и компоновщиком, включающим информацию об отладке. Конечно, исполняемый файл также содержит много специфических для ОС данных /информацию, которая складывается в размер, см. этот вопрос для более подробных ответов.Если вам нужен исполняемый файл небольшого размера, в ответах на этот вопрос . *1007*.

есть множество предложений. РЕДАКТИРОВАТЬ: Если вы узнаете об этом больше, то размер C сводится к высокому уровню.язык в том смысле, что он не взаимодействует напрямую с оборудованием, а скорее говорит с операционной системой.По сути, main - это не точка входа вашей программы, и многое еще происходит, прежде чем она даже будет вызвана.Я настоятельно рекомендую вам прочитать это сообщение в блоге и его продолжение и, прежде всего, посмотреть проницательный разговор Мэтта Годболта на эту тему.Все они в основном касаются gcc и GNU / Linux, но я думаю, что будет справедливо предположить, что аналогичные причины применимы и к размерам исполняемых файлов в других операционных системах.

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