LCC компилирует большой exe's

Я написал это в блокноте, а затем скомпилировал lcc-winиспользуя команду lc hello.c

#include <stdio.h>
int main(void)
{
  printf("Hello World\n");
  return 0;
}

Полученный exe был 100 КБ. Кажется огромным для программы, которая просто печатает Hello World, Это нормально? Могу ли я уменьшить размер? В наши дни 100 КБ на самом деле не проблема, но все равно кажется, что она делает то, что делает. Не было бы слишком плохо, если бы каждый код на C, который я пишу, вышел в виде exe-файла 100 КБ.

2 ответа

Решение

1- Каждый раз, когда вы используете include <> При помощи тега вы делаете ссылку с библиотекой ac и загружаете ее в свою программу. Вот почему так важно включать только те файлы, которые действительно нуждаются в функциях библиотеки.

2. С другой стороны, генерируемый вами двоичный файл всегда полон важной информации (см. libelf или же ASM), заголовки, шаги, которые должны быть здесь, если вы хотите, чтобы программирование выполнялось правильно. Это занимает место.

Это действительно простой вопрос, то, что происходит с lcc-win, то же самое с компилятором C Digital Mars, он не связывает exe-файл с dll-файлами, содержащими функции printf и т. Д., Функции связаны между собой с помощью EXE, поэтому нет необходимости что на вашем компьютере есть библиотеки DLL.

Слушай, я создал простой Hello World EXE-файл и открыл hin в Hex Editor.... функция printf хранится в msvcrt.dll, а у exe нет этой dll в разделе импорта...

введите описание изображения здесь

И вы можете найти определение источника на этой другой картинке:

введите описание изображения здесь

Используйте этот стиль определения функции быстрее, чем вызов DLL.

Другие вопросы по тегам