Просто из любопытства, я хотел знать, почему мои скомпилированные файлы .C
(приблизительно 2-5 кб) меньше по размеру, чем мои исполняемые файлы (.exe) (130-200 kb)?Почему файл исполняемого файла (.exe) имеет размер, отличный от скомпилированного файла .C?
4
A
ответ
3
Исходный файл компилятора - это всего лишь сгенерированный код из фактического исходного файла, а не больше. Исполняемый файл был связан с другими объектными файлами и библиотеками, необходимыми для всех внешних функций и переменных, которые вам нужны. Это, конечно, делает исполняемый файл намного больше, поскольку он содержит гораздо больше кода.
2
Может быть много причин:
- Компилятор может статически зависимые библиотеки, которые по существу копии, что машинный код в результирующий исполняемый
- Ассамблея часто занимает больше места, что исходный код - один строка кода может быть составлен на нескольких линиях Ассамблеи (перемещение данных в/из регистров и т.д.)
2
от here
Программы DJGPP должны связывать всевозможные драйверы pmode для вещей, которые обычно выполняются через BIOS в rmode. Такие функции, как управление памятью, доступ к диску, доступ к консоли, доступ к аппаратным средствам и т. Д. По сути, DJGPP встраивает мини-ОС в ваш исполняемый файл!
Смежные вопросы
- 1. Как уменьшить размер скомпилированного исполняемого файла VB6?
- 2. Обновление исполняемого файла .exe C#
- 3. Остановка исполняемого файла exe C++
- 4. Golang размер исполняемого файла
- 5. Причина огромного размера скомпилированного исполняемого файла Go
- 6. Дата создания скомпилированного исполняемого файла (VC++ 2005)
- 7. Ошибка выполнения исполняемого файла, скомпилированного с py2exe
- 8. Выполнение функции из скомпилированного исполняемого файла
- 9. Запуск скомпилированного исполняемого файла в Xcode дает другой результат от непосредственного вызова исполняемого файла в оболочке
- 10. Размер библиотеки и исполняемого файла
- 11. Распространение скомпилированного исполняемого файла с пакетом R
- 12. Изменить значок исполняемого файла exe
- 13. Почему размер моего скомпилированного файла уменьшается?
- 14. Имя исполняемого файла приложения отличается от имени исполняемого файла vshost
- 15. Файл скомпилированного Java-файла
- 16. Использовать emscripten из Clang скомпилированного исполняемого файла
- 17. Размер бинарного исполняемого файла зависит от наследования?
- 18. Сканирование зависимостей DLL от исполняемого файла C#
- 19. Как уменьшить размер скомпилированного файла?
- 20. Ассамблея против C размер исполняемого файла
- 21. Запуск исполняемого файла (.exe) в JFrame
- 22. Переименование исполняемого файла (.exe) после этого
- 23. Имеет ли размер исполняемого файла Apple для сжатого или несжатого?
- 24. Песочница исполняемого файла в C
- 25. шифрование исполняемого файла
- 26. Что такое расширение исполняемого файла исполняемого файла Java?
- 27. Аутентификация исполняемого файла Windows
- 28. Запуск импортированного кода nsis из исполняемого файла скомпилированного nsis
- 29. C/C++ Обновление исполняемого файла?
- 30. Ошибка исполняемого файла файла Python
Внешние библиотеки, которые не являются общими и такие, и каждая строка в .c-файле превращается в сборку, которая может содержать более одной строки для каждого файла C, а затем она превращается в двоичный файл. Другими словами, ваш текст (например, печать мира привет) создает множество других вещей, которые идут позади. – Magn3s1um
Если вы посмотрите на код, сгенерированный компилятором, и попытайтесь сопоставить соответствующий код C в исходном файле, вы поймете, почему. –
Именно поэтому C называется языком программирования высокого уровня. – devnull