Динамический линкер
Имена в Base.Libdl не экспортируются и должны вызываться, например, как Libdl.dlopen().
Base.Libdl.dlopenФункция
dlopen(libfile::AbstractString [, flags::Integer])
Загрузка разделяемой библиотеки, возвращающая неявное имя.
Расширение, заданное константой dlext (.so, .dll, или .dylib), может быть опущено из строки libfile, так как оно автоматически добавляется при необходимости. Если libfile не является абсолютным путем, то пути в массиве DL_LOAD_PATH проверяются на наличие libfile, а затем система ищет путь загрузки.
Необязательный аргумент флагов — это побитовое ИЛИ нуля или более из RTLD_LOCAL, RTLD_GLOBAL, RTLD_LAZY, RTLD_NOW, RTLD_NODELETE, RTLD_NOLOAD, RTLD_DEEPBIND, и RTLD_FIRST. Они преобразуются в соответствующие флаги команды POSIX (и/или GNU libc и/или MacOS) dlopen, если это возможно, или игнорируются, если указанная функциональность недоступна на текущей платформе. Флаги по умолчанию зависят от платформы. На MacOS флаги по умолчанию dlopen — RTLD_LAZY|RTLD_DEEPBIND|RTLD_GLOBAL, в то время как на других платформах значения по умолчанию RTLD_LAZY|RTLD_DEEPBIND|RTLD_LOCAL. Важное использование этих флагов — указание поведения отличного от по умолчанию, когда загрузчик динамических библиотек связывает ссылки на библиотеки с экспортируемыми символами и если привязанные ссылки помещаются в область процесса или глобальную область. Например, RTLD_LAZY|RTLD_DEEPBIND|RTLD_GLOBAL позволяет символам библиотеки быть доступными для использования в других разделяемых библиотеках, что решает проблемы зависимости между разделяемыми библиотеками.
Base.Libdl.dlopen_eФункция
dlopen_e(libfile::AbstractString [, flags::Integer])
Аналогично dlopen, за исключением возвращения указателя NULL вместо выдачи ошибок.
Base.Libdl.RTLD_NOWКонстанта
RTLD_DEEPBIND RTLD_FIRST RTLD_GLOBAL RTLD_LAZY RTLD_LOCAL RTLD_NODELETE RTLD_NOLOAD RTLD_NOW
Константа перечисления для dlopen. Подробности см. в справке вашей платформы, если применимо.
Base.Libdl.dlsymФункция
dlsym(handle, sym)
Поиск символа в разделяемой библиотеке, возвращает указатель на вызываемую функцию при успехе.
исходный код
Base.Libdl.dlsym_eФункция
dlsym_e(handle, sym)
Поиск символа в разделяемой библиотеке, молча возвращает указатель NULL при неудачном поиске.
Base.Libdl.dlcloseФункция
dlclose(handle)
Закрытие разделяемой библиотеки, на которую ссылается имя.
исходный код
Base.Libdl.dlextКонстанта
dlext
Расширение файла для динамических библиотек (например, dll, dylib, so) на текущей платформе.
исходный код
Base.Libdl.find_libraryФункция
find_library(names, locations)
Ищет первую библиотеку в names в списках путей locations, DL_LOAD_PATH, или системных путях библиотек (в указанном порядке), которую можно успешно загрузить с помощью dlopen. При успехе возвращается одно из имен (возможно, с префиксом одного из путей в указанных местах). Эта строка может быть назначена global const и использоваться в качестве имени библиотеки в будущих ccall. При неудаче возвращается пустая строка.
Base.Libdl.DL_LOAD_PATHКонстанта
DL_LOAD_PATH
При вызове dlopen сначала будут обработаны пути в этом списке в порядке их следования, прежде чем искать системные расположения для поиска допустимого имени библиотеки.
© 2009–2016 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/release-0.6/stdlib/libdl/