[devel] -fpic & -shared

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Чт Дек 27 13:12:08 MSK 2007


On Thu, Dec 27, 2007 at 12:54:20PM +0300, Alexey Tourbin wrote:
> > Вам не кажется, что если бы я обладал квалификацией С программиста 
> > достаточной, чтобы разобраться в этом коде, то вопросов уровня "а с какими 
> > опциями можно компилировать библиотеки" у меня бы не возникало впринципе? 
> 
> Можно ещё прочитать dsohowto.pdf.  Если комплиировать *.o без -pic и
> компоновать -shared, то будут так называемые text relocations.

На пальцах, это означает, что бинарный код библиотеки будет сформирован
таким образом, что как бы "статические" адреса переходов прошиты в сам
этот код.  Посольку в виртуальную память процесса библиотека загружается
по заранее неизвестному адресу, то это означает, что рантайм-линкер
ld.so будет "по живому" править исполняемый код библиотеки (подменять
адреса перехода по некоему смещению относительно адреса, куда
загрузилась библиотека).

При формировании бинарного кода через -pic создаётся дополнительный
уровень косвенности переходов, так что линкеру нужно будет поправить
адреса всего примерно "в одном месте".

С исполняемыми файлами такой проблемы нет, поскольку они загружаются
линкером по константному адресу.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20071227/bd37aa85/attachment-0002.bin>


Подробная информация о списке рассылки Devel