Мне просто любопытно.
bash-3.00$ ldd libmylibrary.so
ldd: warning: you do not have execution permission for `libmylibrary.so'
Кажется, что все работает нормально только с + r. Я заметил, что большинство .so в / usr / lib имеют + x set ...
Почему разделяемые библиотеки должны иметь исполняемый бит? Что может произойти, если я не установлю это?
Ответы:
На самом деле это зависит от
ldd
реализации.ldd
обычно это скрипт, вы можете отредактировать его, чтобы увидеть, где и почему вы получаете эту ошибку.В Ubuntu 10.04
ldd
проверяетread
только разрешение. Это может дать ошибку не динамический исполняемый файл, если файл не является ELF ( Исполняемый и связываемый формат ).-rw-r--r--
Например, все это - libsНе шокирует желание получить
x
доступ к общей библиотеке.executable
Режим представляет собой соглашение , что дает OS другой уровень контроля прав доступа. Исполняемый загрузчик контролирует этот доступ, чтобы гарантировать, что пользователь может выполнить его, но также и для предотвращения ошибок (некоторые сценарии или программы не должны выполняться некоторыми людьми).Это может быть распространено на разделяемые библиотеки по той же причине - но разделяемые библиотеки не могут запускаться сами по себе и менее подвержены ошибкам, которые могут быть использованы случайно ). Таким образом, необходимость менее очевидна (
r
доступ достаточен).источник
На самом деле вы можете выполнить много библиотек, посмотрите, например, что происходит, когда вы печатаете
/lib/libc.so.6
в своей оболочке в недавней системе GNU / Linux.источник
думаю, что иметь исполняемый файл с -x. Вы не сможете выполнить это. Рассмотрим эти библиотеки как набор общих функций, которые вызываются другой программой (скажем, myProgra). Если вы не можете выполнить библиотеки / функции ... тогда у вас ничего нет
Пример
Теперь, если вы поместите function1 и function2 в другой файл и включите его, то вы библиотека. (Конечно, это что-то более сложное. Это всего лишь пример)
Но в любом случае, как вы видите, вы должны выполнить код, который включен в библиотеку
источник
Ключ - это формат файла, Исполняемый и Связываемый формат. Поскольку один и тот же точный формат файла используется для идентификации как исполняемой, так и общей библиотеки, оба должны иметь соответствующие разрешения для исполняемого файла для загрузчика ОС. Это позволяет использовать один загрузчик и использовать исполняемые файлы в качестве DSO, если они содержат таблицу символов.
источник