Re[4]: Как линкер линкует либы?
От: Аноним  
Дата: 17.02.04 08:25
Оценка:
G>>Я понимаю, что включается только то, что надо. Вопрос был еще и такой: "А знает ли линкер точно, что надо включить, чтобы работали функции подключенные из библиотек?". С функциями описанными в исходниках вопросов нет, там все ясно, а вот есть ли список зависимостей для функция находящихся в библиотеках, во всех ли библиотеках?
LVV>Обычно в объектном модуле (а вовсе не в библиотеке) есть такая структура — словарь внешних символов. Там-то и прописываются все имена вызываемых функций.

Вопрос в том, есть ли там ещё и словарь внутренних символов.

А что он делает со static функциями.
По идее их имена линкеру вообще не видны, а для их вызова компилятор может использовать какие-то упрощённые конструкции (снижать степень косвенности).

А как там сейчас обстоит дело с определением адресов функций?
Помнится в ДОС была специальная таблица по которой пробегал загрузчик и правил адреса в коде загруженного exe-шника? Или я не прав?
А как сейчас? Править загруженные exe-шники вроде нельзя — файлы мапятся в память и под исправленные страницы надо создавать копии. А делать дополнительный уровень косвенности (вызовы через таблицу) — тоже не интересно.
Или сейчас все программы линкуются для работы по фиксированному адресу?
А как же тогда dll, точнее вызовы функций внутри dll?

Кому не лень, просветите народ.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.