2013-10-14 4 views
1

Я создаю приложение для iPhone, которое мне нужно для того, чтобы быть независимым от положения. Я связываюсь с сторонними библиотеками, к которым у меня нет исходного кода.Статическая связь с сторонней библиотекой non-pic

  1. Если такая библиотека не была составлена ​​с -fPIC и, следовательно, не является позиционно-независимым, могу ли я связать против него, чтобы произвести правильный PIE двоичный?

  2. Будет ли динамический загрузчик обрабатывать любые перестановки текста, которые происходят из-за кода из этой библиотеки.

  3. Если нет, то каковы мои возможные варианты разрешения этой ситуации и все еще производят бинарный файл PIE?

ответ

-1

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

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

Или сказать это еще простыми словами: просто ссылку на эту статическую библиотеку, и все будет хорошо.

Смежные вопросы