Общая библиотека HOWTO объясняет большинство механизмов, включенных, и динамическое руководство загрузчика вдается в большее количество подробностей. Каждый вариант Unix поступает по-своему, но большая часть использования тот же формат исполняемых файлов (ELF) и имеет подобных динамических компоновщиков (полученный на основании Соляриса). Ниже я буду суммировать общее поведение с вниманием на Linux; проверьте руководства своей системы на полную историю.
Короче говоря когда это ищет динамическую библиотеку (.so
файл) попытки компоновщика:
LD_LIBRARY_PATH
переменная среды (DYLD_LIBRARY_PATH
на OSX);/etc/ld.so.conf
плюс /lib
и /usr/lib
.rpath хранится в исполняемом файле (это DT_RPATH
или DT_RUNPATH
динамический атрибут). Это может содержать полные пути или пути, запускающиеся с $ORIGIN
указать на путь относительно местоположения исполняемого файла (например, если исполняемый файл находится в /opt/myapp/bin
и его rpath $ORIGIN/../lib:$ORIGIN/../plugins
затем динамический компоновщик заглянет /opt/myapp/lib
и /opt/myapp/plugins
). rpath обычно определяется, когда исполняемый файл компилируется, с -rpath
опция к ld
, но можно изменить его впоследствии с chrpath
.
В сценарии Вы описываете, если Вы - разработчик или поставщик программного блока приложения и предназначаете, чтобы это было установлено в a …/bin
, …/lib
структура, затем свяжитесь с -rpath='$ORIGIN/../lib'
. Если Вы устанавливаете предварительно созданный двоичный файл в своей системе, любой поместил библиотеку в каталог на пути поиска (/usr/local/lib
если Вы - системный администратор, иначе каталог, к которому Вы добавляете $LD_LIBRARY_PATH
), или попытка chrpath
.
Я вполне уверен, ответ здесь ldconfig
.
ldconfig создает необходимые ссылки и кэш к новым общим библиотекам, найденным в каталогах, указанных на командной строке в файле/etc/ld.so.conf, и в доверяемых каталогах (/lib и/usr/lib). Кэш используется компоновщиком во время выполнения, ld.so, или ld-linux.so. ldconfig проверяет заголовок и имена файлов библиотек, с которыми он встречается при определении, каким версиям нужно обновить их ссылки.
В Linux поведение является explicited в ld(1)
страница справочника
The linker uses the following search paths to locate required shared libraries: 1. Any directories specified by -rpath-link options. 2. Any directories specified by -rpath options. The difference between -rpath and -rpath-link is that directories specified by -rpath options are included in the executable and used at runtime, whereas the -rpath-link option is only effective at link time. Searching -rpath in this way is only supported by native linkers and cross linkers which have been configured with the --with-sysroot option. 3. On an ELF system, for native linkers, if the -rpath and -rpath-link options were not used, search the contents of the environment variable "LD_RUN_PATH". 4. On SunOS, if the -rpath option was not used, search any directories specified using -L options. 5. For a native linker, the search the contents of the environment variable "LD_LIBRARY_PATH". 6. For a native ELF linker, the directories in "DT_RUNPATH" or "DT_RPATH" of a shared library are searched for shared libraries needed by it. The "DT_RPATH" entries are ignored if "DT_RUNPATH" entries exist. 7. The default directories, normally /lib and /usr/lib. 8. For a native linker on an ELF system, if the file /etc/ld.so.conf exists, the list of directories found in that file. If the required shared library is not found, the linker will issue a warning and continue with the link.
Гвенвью, как я уже сказал, но это не то, чего я хотел.
gThumb может это сделать. Он поставляется с небольшими зависимостями, но выглядит чужеродно в Fluxbox.
Менее зависимое от рабочего стола решение - # 2 в разделе :
Установка gifsicle.
Создайте файл рабочего стола
[Desktop Entry]
Name=GIFview
Exec=gifview -a %f
Icon=gif
Terminal=false
Type=Application
StartupNotify=true
NoDisplay=true
MimeType=image/gif
и поместите его в ~/.local/share/applications.
-121--79799-Для этого нет общего метода. Фильтры - это просто потоки чтения и записи, они не модифицируют поток на месте, и взаимосвязь между ними абсолютно произвольна и зависит от конкретного инструмента. Таким образом, нет пути механизм общего назначения мог бы знать, что что-то было «удалено» из ввода, и, следовательно, сохранить его для копирования в выход.
Но такие инструменты, как awk
и perl
, могут записывать в произвольные файлы самостоятельно, так что они могут делать это с явным кодом:
awk '/regexp/ { print } !/regexp/ { print > "non-matching.txt" }' > matching.txt
-121--166239- Для запущенных приложений файл /proc/1234/maps
содержит все фактические динамически связанные библиотеки.
Где 1234
- это pid исполняемого файла.
Linux следует за LD_LIBRARY_PATH и другими переменными, как указано в ответе Жиля.
/lib64
и/usr/lib64
используются для двоичных файлов на 64 бита и/lib
и/usr/lib
используются для двоичных файлов на 32 бита. – Mark Lakata 04.06.2015, 21:21