Форум программистов, компьютерный форум CyberForum.ru

Первый вопрос из книги вильямса:Что такое компоновка - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.67
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,148
Завершенные тесты: 1
13.11.2009, 21:32     Первый вопрос из книги вильямса:Что такое компоновка #1
что такое компоновка?Я читал в кyиге и понял что компоновка превращает файл срр в obj, так?тогда что такое obj, и почему сразу не cjздать файл *exe?

Добавлено через 24 минуты
и еще у меня вопросик,в чем разница между интерпретатором и компилятором?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2009, 21:32     Первый вопрос из книги вильямса:Что такое компоновка
Посмотрите здесь:

что такое конструктор? C++
Что это такое??? C++
Что такое 15 - (15/4) *4 ? C++
Первый вопрос о C++ =) C++
Вопрос: что такое ключ в списках? C++
C++ Шифр Вильямса
C++ Книги по С++ (что читать после книги Дейтела "Как программировать на С++")
Что такое int* C++
C++ что такое for(;;)
C++ Что такое кодировка
C++ Что такое С++ ?
C++ Что такое *this?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16936 / 5341 / 328
Регистрация: 30.03.2009
Сообщений: 14,355
Записей в блоге: 26
14.11.2009, 00:38     Первый вопрос из книги вильямса:Что такое компоновка #2
Цитата Сообщение от МедведЪ Посмотреть сообщение
превращает файл срр в ob
Этот процесс более правильно называется "трансляция", хотя зачастую термин "компиляция" употребляют именно для этого

Файл obj - это файл с кодом, но в котором ещё неизвестны адреса глобальных переменных и функций. Допустим, ты написал код по вызову printf'а, но самой процедуры printf у тебя в коде нет. В объектном файле построится код, где для вызова printf будет стоять операция call, но втом месте, где должен быть адрес printf останется дырка (т.е. нули в нужном количестве) и специальным образом это дырка подсвечивается типа "вот в таком-то месте должен стоять адрес printf". Эта дырка называется relocation (по русски переводят вроде как "перемещение").

Библиотеку на начальном этапе можешь тоже считать как объектный файл. Далее, когда тебе нужно получить исполняемую программу, запускается процесс линковки ("связывания", "компоновки"). В линковку подаются все объектные файлы и библиотеки. Линкер из всех этих файлов лепит исполняемый файл с кодом. Теперь, когда код имеется весь, линкер вычисляет для каждой переменной и функции её адрес, смотрит во всех местах relocation'ы и в нужные места прописывает правильный адрес. Таким образом у тебя получается финальный код, где всё связано друг с другом по адресам.

Но вот на пальцах будет примерно так.

Компилятору на вход подаётся программа на языке, а на выходе получается исполняемый файл, готовый к работе. Интерпретатор на выходе ничего не получает, он простоходит по файлу и по очереди исполняет каждую инструкцию языка. Грубо говоря, если поставлена задача "прочитать текстовый файл и для каждой строки напечатать её длину" то это в какой-то степени вырожденный случай интерпретации. Для каждого исполнения ты запускаешь свою программу (которая выполняет роль интерпретатора) и подаёшь ей на вход текстовый файл (который выполняет роль текста программы)
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,148
Завершенные тесты: 1
14.11.2009, 09:09  [ТС]     Первый вопрос из книги вильямса:Что такое компоновка #3
Цитата Сообщение от Evg Посмотреть сообщение
Грубо говоря, если поставлена задача "прочитать текстовый файл
может это как то глупо,но может это build?просто проверяет код
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16936 / 5341 / 328
Регистрация: 30.03.2009
Сообщений: 14,355
Записей в блоге: 26
14.11.2009, 11:32     Первый вопрос из книги вильямса:Что такое компоновка #4
"это" это что?
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,148
Завершенные тесты: 1
14.11.2009, 12:05  [ТС]     Первый вопрос из книги вильямса:Что такое компоновка #5
Цитата Сообщение от Evg Посмотреть сообщение
это" это что?
то что я процитировал

Добавлено через 50 секунд
интерпретатор нужен для того что бы грубо говоря прочитать текстовой файл,я и говорю,это Build?
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16936 / 5341 / 328
Регистрация: 30.03.2009
Сообщений: 14,355
Записей в блоге: 26
14.11.2009, 12:14     Первый вопрос из книги вильямса:Что такое компоновка #6
Нет. Built - это процесс компиляции (т.е. преобразование исходника в самостоятельный бинарный файл). Дальше твой бинарный файл будет работать без компилятора и без исходника - т.е. действительно самостоятельный исполняемый файл

Чтобы запустить что-то на интерпретаторе, тебе всегда нужно иметь рядом саму программу-интерпретатор
Yandex
Объявления
14.11.2009, 12:14     Первый вопрос из книги вильямса:Что такое компоновка
Ответ Создать тему
Опции темы

Текущее время: 15:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru