Scroll to navigation

USELIB(2) Руководство программиста Linux USELIB(2)

ИМЯ

uselib - загрузить динамическую библиотеку

СИНТАКСИС

#include <unistd.h>

int uselib(const char *library);

Замечание: В заголовочных файлах glibc этой системный вызов отсутствует; смотрите ЗАМЕЧАНИЯ.

ОПИСАНИЕ

Системный вызов uselib() выполняет загрузку динамической библиотеки для использования в вызывающем процессе. Она задаётся именем файла. Адрес загрузки находится в ней самой. Библиотека может быть в любом распознаваемом формате.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.

ОШИБКИ

В дополнении к тем кодам ошибок, которые возвращаются вызовами open(2) и mmap(2), также могут быть следующие коды ошибок:

На библиотеку, заданную library, нет прав на чтение или исполнение, или вызывающий не имеет прав на поиск в одном из каталогов, указанных в пути. (Смотрите также path_resolution(7).)
Достигнуто максимальное количество открытых файлов в системе.
Библиотека, заданная library, имеет неизвестный исполняемый тип; например, в ней нет корректных идентификационных чисел (magic numbers).

СООТВЕТСТВИЕ СТАНДАРТАМ

Вызов uselib() применяется только в Linux и поэтому не должен использоваться в программах, предназначенных для переноса на другие платформы.

ЗАМЕЧАНИЯ

Устаревший системный вызов, не поддерживается glibc. В заголовочных файлах glibc он не объявлен, но в недавнем прошлом версии glibc до 2.23 экспортировали ABI для этого системного вызова. Поэтому, чтобы получить данный системный вызов достаточно вручную объявить интерфейс в своём коде; или же можно вызвать его через syscall(2).

In ancient libc versions (before glibc 2.0), uselib() was used to load the shared libraries with names found in an array of names in the binary.

Начиная с Linux 3.15 данный системный вызов доступен только, если ядро собрано с параметром CONFIG_USELIB.

СМ. ТАКЖЕ

ar(1), gcc(1), ld(1), ldd(1), mmap(2), open(2), dlopen(3), capabilities(7), ld.so(8)

ЗАМЕЧАНИЯ

Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.

ПЕРЕВОД

Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy Ovchinnikov <dmitriyxt5@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Katrin Kutepova <blackkatelv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.

21 декабря 2020 г. Linux