Почему файлы С++ OBJ важны?

Будьте предупреждены, что я новичок в С++.

Когда я компилирую свою программу, я замечаю, что для каждого класса, который у меня есть, существует .obj. Когда я смотрел на другие программы в своих программных файлах, я понял, что у этих программ почти нет .obj, поэтому я думаю, что я делаю что-то неправильно.

Также, если я удалил obj файлы из каталога выпуска и попытался снова запустить exe, и он по-прежнему работал точно так же, как и раньше, я знаю, что эти файлы не могут быть бессмысленными, но...

Каково их использование? Должен ли он сделать их для каждого файла класса? - если нет, то как это разрешить?

Как я могу поместить их в один каталог, например, папку obj при компиляции?

Ответы

Ответ 1

.obj файлы (.o файлы в Linux/Unix) - это скомпилированные исходные файлы, для каждого файла .cpp или более формально "единицы компиляции" действительно будет один. Они создаются на этапе компиляции проекта.

Эти файлы .obj затем объединяются компоновщиком либо к приложению, обычно к файлу .exe в Windows, либо к файлу библиотеки, который по окнам может быть .dll для динамической библиотеки или .lib для статических библиотека (которая в основном представляет собой коллекцию файлов .obj в одной упаковке в один файл, см. ниже). В Unix-подобной платформе приложение обычно не имеет расширения, а динамическая библиотека имеет расширение .so, а статическая библиотека имеет расширение .a.

Вы не видите файлы .obj или статические файлы .lib с программами, потому что они не нужны во время выполнения, они используются только компоновщиком. Когда вы запускаете этап компоновки проекта, компоновщик объединяет все необходимые файлы .obj в файлы .exe и .dll (или эквивалентные), которые используются во время выполнения.

Ответ 2

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

Очень большой ответ можно найти в любой книге на С++.

Нет проблем. Но если вы удалите их, вы заставите компилятор компилировать некоторые файлы, которые не имеют никаких изменений, но больше не имеют OBJ файла. Помните об этом.

Просто забудьте о них, если вы все еще работаете в своем коде.

Ответ 3

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

Надеюсь, что это поможет!