[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/ldconfig-usage":3,"mdc--3lt5l3-key":708,"mdc-q5ttsi-key":740,"mdc-ckdz1o-key":793,"mdc--bwftrh-key":817,"mdc--jgnjx3-key":848,"mdc-tk4u8p-key":864,"mdc--gxopa0-key":895,"mdc--7ik91g-key":918,"related-/guides/linux/ldd-usage,/guides/linux/library-path,/errors/linux/error-ld.so-not-found":942},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":642,"code":642,"createdAt":643,"description":644,"difficulty":645,"draft":646,"estimatedTime":647,"extension":648,"faq":649,"howToSteps":662,"howToTotalTime":675,"image":642,"keywords":676,"locale":687,"meta":688,"navigation":689,"path":690,"platform":691,"related":692,"section":696,"seo":697,"severity":642,"stem":698,"summary":699,"tags":700,"twitterCreator":642,"twitterSite":642,"type":706,"updatedAt":643,"__hash__":707},"content_ru/guides/linux/ldconfig-usage.md","ldconfig в Linux: полное руководство по управлению библиотеками",[7,8,9,10],"Ubuntu 20.04+","Debian 10+","CentOS 7+","Fedora 35+","FixPedia Team",{"type":13,"value":14,"toc":613},"minimark",[15,19,24,42,45,49,52,85,89,94,97,118,125,148,151,155,162,171,195,205,215,219,222,234,241,256,270,274,277,295,302,306,309,341,358,362,368,374,392,395,399,405,415,419,428,435,458,462,469,476,479,482,486,490,497,514,518,525,543,550,554,557,577,584,588,609],[16,17,5],"h1",{"id":18},"ldconfig-в-linux-полное-руководство-по-управлению-библиотеками",[20,21,23],"h2",{"id":22},"введение-зачем-это-нужно","Введение / Зачем это нужно",[25,26,27,28,32,33,37,38,41],"p",{},"В Linux динамические библиотеки (файлы ",[29,30,31],"code",{},".so",") — это ключевой механизм для экономии памяти и упрощения обновлений программ. Однако система должна как-то знать, где эти библиотеки расположены. Эту задачу решает ",[34,35,36],"strong",{},"кэш linker'а",", который строится и обновляется утилитой ",[29,39,40],{},"ldconfig",".",[25,43,44],{},"Этот гайд научит вас управлять путями поиска библиотек: добавлять нестандартные каталоги, обновлять кэш и диагностировать проблемы, когда программа жалуется, что \"библиотека не найдена\".",[20,46,48],{"id":47},"требования-подготовка","Требования / Подготовка",[25,50,51],{},"Перед началом убедитесь, что у вас есть:",[53,54,55,59,72,75],"ul",{},[56,57,58],"li",{},"Доступ к терминалу Linux (Ubuntu, Debian, CentOS, Fedora и др.).",[56,60,61,62,65,66,69,70,41],{},"Права ",[34,63,64],{},"суперпользователя"," (",[29,67,68],{},"sudo",") для редактирования системных конфигурационных файлов и запуска ",[29,71,40],{},[56,73,74],{},"Базовое понимание структуры файловой системы.",[56,76,77,78,80,81,84],{},"Сама библиотека (файл с расширением ",[29,79,31],{},", например ",[29,82,83],{},"libexample.so",") должна быть уже скопирована в выбранный каталог.",[20,86,88],{"id":87},"пошаговая-инструкция","Пошаговая инструкция",[90,91,93],"h3",{"id":92},"шаг-1-проверьте-текущий-кэш-библиотек","Шаг 1: Проверьте текущий кэш библиотек",[25,95,96],{},"Сначала посмотрите, какие пути уже известны системе. Выполните команду:",[98,99,104],"pre",{"className":100,"code":101,"language":102,"meta":103,"style":103},"language-bash shiki shiki-themes github-light github-dark","ldconfig -p\n","bash","",[29,105,106],{"__ignoreMap":103},[107,108,111,114],"span",{"class":109,"line":110},"line",1,[107,112,40],{"class":113},"sScJk",[107,115,117],{"class":116},"sj4cs"," -p\n",[25,119,120,121,124],{},"Вывод будет очень объёмным — это список всех библиотек в кэше и их полных путей. Чтобы найти конкретную библиотеку, используйте ",[29,122,123],{},"grep",":",[98,126,128],{"className":100,"code":127,"language":102,"meta":103,"style":103},"ldconfig -p | grep libssl\n",[29,129,130],{"__ignoreMap":103},[107,131,132,134,137,141,144],{"class":109,"line":110},[107,133,40],{"class":113},[107,135,136],{"class":116}," -p",[107,138,140],{"class":139},"szBVR"," |",[107,142,143],{"class":113}," grep",[107,145,147],{"class":146},"sZZnC"," libssl\n",[25,149,150],{},"Если ваша библиотека уже есть в списке, возможно, проблема в другом (например, в версии библиотеки).",[90,152,154],{"id":153},"шаг-2-добавьте-новый-каталог-с-библиотеками","Шаг 2: Добавьте новый каталог с библиотеками",[25,156,157,158,161],{},"Предположим, вы разместили библиотеки в ",[29,159,160],{},"/opt/myapp/lib",". Нужно сообщить системе об этом пути.",[25,163,164,167,168,124],{},[34,165,166],{},"Способ A (рекомендуемый):"," Создайте отдельный конфигурационный файл в ",[29,169,170],{},"/etc/ld.so.conf.d/",[98,172,174],{"className":100,"code":173,"language":102,"meta":103,"style":103},"echo \"/opt/myapp/lib\" | sudo tee /etc/ld.so.conf.d/myapp.conf\n",[29,175,176],{"__ignoreMap":103},[107,177,178,181,184,186,189,192],{"class":109,"line":110},[107,179,180],{"class":116},"echo",[107,182,183],{"class":146}," \"/opt/myapp/lib\"",[107,185,140],{"class":139},[107,187,188],{"class":113}," sudo",[107,190,191],{"class":146}," tee",[107,193,194],{"class":146}," /etc/ld.so.conf.d/myapp.conf\n",[25,196,197,200,201,204],{},[34,198,199],{},"Способ B:"," Вручную отредактируйте файл ",[29,202,203],{},"sudo nano /etc/ld.so.conf"," и добавьте путь в новую строку. Этот способ менее предпочтителен, так как изменения в основном файле сложнее отслеживать.",[206,207,208],"blockquote",{},[25,209,210,211,214],{},"💡 ",[34,212,213],{},"Совет:"," Используйте Способ A. Он соответствует Filesystem Hierarchy Standard и позволяет легко включать/отключать пути путём удаления одного файла.",[90,216,218],{"id":217},"шаг-3-обновите-кэш","Шаг 3: Обновите кэш",[25,220,221],{},"После добавления пути необходимо перестроить кэш. Выполните:",[98,223,225],{"className":100,"code":224,"language":102,"meta":103,"style":103},"sudo ldconfig\n",[29,226,227],{"__ignoreMap":103},[107,228,229,231],{"class":109,"line":110},[107,230,68],{"class":113},[107,232,233],{"class":146}," ldconfig\n",[25,235,236,237,240],{},"Для отладки запустите с флагом ",[29,238,239],{},"-v"," (verbose), чтобы увидеть, какие каталоги обрабатываются:",[98,242,244],{"className":100,"code":243,"language":102,"meta":103,"style":103},"sudo ldconfig -v\n",[29,245,246],{"__ignoreMap":103},[107,247,248,250,253],{"class":109,"line":110},[107,249,68],{"class":113},[107,251,252],{"class":146}," ldconfig",[107,254,255],{"class":116}," -v\n",[25,257,258,259,262,263,266,267,269],{},"В выводе вы увидите строки вида ",[29,260,261],{},"caching file..."," и ",[29,264,265],{},"scanning...",". Убедитесь, что ваш новый путь (",[29,268,160],{},") упоминается.",[90,271,273],{"id":272},"шаг-4-проверьте-что-библиотека-обнаружена","Шаг 4: Проверьте, что библиотека обнаружена",[25,275,276],{},"Повторите проверку из Шага 1, но уже для конкретной библиотеки:",[98,278,280],{"className":100,"code":279,"language":102,"meta":103,"style":103},"ldconfig -p | grep libexample\n",[29,281,282],{"__ignoreMap":103},[107,283,284,286,288,290,292],{"class":109,"line":110},[107,285,40],{"class":113},[107,287,136],{"class":116},[107,289,140],{"class":139},[107,291,143],{"class":113},[107,293,294],{"class":146}," libexample\n",[25,296,297,298,301],{},"Если в выводе появилась строка с полным путём к вашей библиотеке (например, ",[29,299,300],{},"libexample.so (libc6,x86-64) => /opt/myapp/lib/libexample.so","), значит, всё настроено правильно.",[90,303,305],{"id":304},"шаг-5-альтернатива-переменная-ld_library_path-временное-решение","Шаг 5: Альтернатива — переменная LD_LIBRARY_PATH (временное решение)",[25,307,308],{},"Если вам нужно быстро запустить программу без прав администратора или для тестирования, используйте переменную окружения:",[98,310,312],{"className":100,"code":311,"language":102,"meta":103,"style":103},"export LD_LIBRARY_PATH=\"/opt/myapp/lib:$LD_LIBRARY_PATH\"\n./myprogram\n",[29,313,314,335],{"__ignoreMap":103},[107,315,316,319,323,326,329,332],{"class":109,"line":110},[107,317,318],{"class":139},"export",[107,320,322],{"class":321},"sVt8B"," LD_LIBRARY_PATH",[107,324,325],{"class":139},"=",[107,327,328],{"class":146},"\"/opt/myapp/lib:",[107,330,331],{"class":321},"$LD_LIBRARY_PATH",[107,333,334],{"class":146},"\"\n",[107,336,338],{"class":109,"line":337},2,[107,339,340],{"class":113},"./myprogram\n",[25,342,343,346,347,350,351,354,355,41],{},[34,344,345],{},"Важно:"," Эта настройка действует только в текущем терминале. Чтобы сделать её постоянной, добавьте строку ",[29,348,349],{},"export LD_LIBRARY_PATH=..."," в ",[29,352,353],{},"~/.bashrc"," или ",[29,356,357],{},"~/.profile",[20,359,361],{"id":360},"проверка-результата","Проверка результата",[25,363,364,365,367],{},"Запустите приложение, которое должно использовать новую библиотеку. Если оно стартует без ошибок \"cannot open shared object file\", значит, ",[29,366,40],{}," сработал.",[25,369,370,371,124],{},"Также можно проверить зависимости конкретного бинарного файла с помощью утилиты ",[29,372,373],{},"ldd",[98,375,377],{"className":100,"code":376,"language":102,"meta":103,"style":103},"ldd /usr/bin/myprogram | grep libexample\n",[29,378,379],{"__ignoreMap":103},[107,380,381,383,386,388,390],{"class":109,"line":110},[107,382,373],{"class":113},[107,384,385],{"class":146}," /usr/bin/myprogram",[107,387,140],{"class":139},[107,389,143],{"class":113},[107,391,294],{"class":146},[25,393,394],{},"В выводе должен отображаться путь, который вы добавили.",[20,396,398],{"id":397},"возможные-проблемы","Возможные проблемы",[90,400,402,403],{"id":401},"ошибка-no-such-file-or-directory-при-запуске-ldconfig","Ошибка: \"No such file or directory\" при запуске ",[29,404,40],{},[25,406,407,408,411,412,41],{},"Убедитесь, что путь в конфигурационном файле существует и является ",[34,409,410],{},"каталогом",", а не отдельным файлом. Проверьте: ",[29,413,414],{},"ls -ld /opt/myapp/lib",[90,416,418],{"id":417},"ошибка-permission-denied","Ошибка: \"Permission denied\"",[25,420,421,422,424,425,427],{},"Вы запускаете ",[29,423,40],{}," без ",[29,426,68],{},". Все системные операции требуют прав администратора.",[90,429,431,432,434],{"id":430},"библиотека-есть-в-каталоге-но-ldconfig-её-не-находит","Библиотека есть в каталоге, но ",[29,433,40],{}," её не находит",[436,437,438,448],"ol",{},[56,439,440,441,354,444,447],{},"Проверьте имя файла. Обычно linker ищет файлы с именами ",[29,442,443],{},"lib\u003Cname>.so",[29,445,446],{},"lib\u003Cname>.so.\u003Cversion>",". Симлинки должны быть корректными.",[56,449,450,451,262,454,457],{},"Убедитесь, что у каталога и файла есть права на чтение для всех пользователей (например, ",[29,452,453],{},"chmod 755 /opt/myapp/lib",[29,455,456],{},"chmod 644 /opt/myapp/lib/*.so",").",[90,459,461],{"id":460},"изменения-не-применятся-после-редактирования-конфига","Изменения не применятся после редактирования конфига",[25,463,464,465,468],{},"Вы могли забыть запустить ",[29,466,467],{},"sudo ldconfig"," после сохранения файла. Кэш не обновляется автоматически.",[90,470,472,475],{"id":471},"ld_library_path-не-работает",[29,473,474],{},"LD_LIBRARY_PATH"," не работает",[25,477,478],{},"Убедитесь, что вы экспортируете переменную в той же сессии, где запускаете программу, и что путь указан абсолютный.",[480,481],"in-article-ad",{},[20,483,485],{"id":484},"продвинутое-использование","Продвинутое использование",[90,487,489],{"id":488},"принудительное-обновление-только-одного-файла","Принудительное обновление только одного файла",[25,491,492,493,496],{},"Если вы заменили библиотеку в уже известном каталоге (например, ",[29,494,495],{},"/usr/lib","), можно обновить кэш только для неё:",[98,498,500],{"className":100,"code":499,"language":102,"meta":103,"style":103},"sudo ldconfig -n /usr/lib\n",[29,501,502],{"__ignoreMap":103},[107,503,504,506,508,511],{"class":109,"line":110},[107,505,68],{"class":113},[107,507,252],{"class":146},[107,509,510],{"class":116}," -n",[107,512,513],{"class":146}," /usr/lib\n",[90,515,517],{"id":516},"игнорирование-кэша-для-отладки","Игнорирование кэша (для отладки)",[25,519,520,521,524],{},"Чтобы linker игнорировал кэш и искал библиотеки напрямую в стандартных путях, используйте флаг ",[29,522,523],{},"-N"," при запуске программы:",[98,526,528],{"className":100,"code":527,"language":102,"meta":103,"style":103},"LD_PRELOAD=/path/to/libexample.so myprogram\n",[29,529,530],{"__ignoreMap":103},[107,531,532,535,537,540],{"class":109,"line":110},[107,533,534],{"class":321},"LD_PRELOAD",[107,536,325],{"class":139},[107,538,539],{"class":146},"/path/to/libexample.so",[107,541,542],{"class":113}," myprogram\n",[25,544,545,546,549],{},"Или временно переименуйте кэш-файл: ",[29,547,548],{},"sudo mv /etc/ld.so.cache /etc/ld.so.cache.bak"," (не рекомендуется в продакшене).",[90,551,553],{"id":552},"просмотр-информации-о-конкретной-библиотеке","Просмотр информации о конкретной библиотеке",[25,555,556],{},"Чтобы узнать, какая версия библиотеки будет загружена по умолчанию, используйте:",[98,558,560],{"className":100,"code":559,"language":102,"meta":103,"style":103},"ldconfig -p | grep -w libexample\n",[29,561,562],{"__ignoreMap":103},[107,563,564,566,568,570,572,575],{"class":109,"line":110},[107,565,40],{"class":113},[107,567,136],{"class":116},[107,569,140],{"class":139},[107,571,143],{"class":113},[107,573,574],{"class":116}," -w",[107,576,294],{"class":146},[25,578,579,580,583],{},"Ключ ",[29,581,582],{},"-w"," ищет точное совпадение слова, что помогает избежать ложных срабатываний.",[20,585,587],{"id":586},"заключение","Заключение",[25,589,590,591,593,594,596,597,599,600,602,603,606,607,41],{},"Утилита ",[29,592,40],{}," — простой, но критически важный инструмент администрирования Linux. Правильное управление путями библиотек решает большинство проблем с запуском программ, которые жалуются на отсутствующие ",[29,595,31],{},"-файлы. Основной алгоритм: добавить путь в ",[29,598,170],{},", запустить ",[29,601,467],{},", проверить через ",[29,604,605],{},"ldconfig -p",". Для временных решений используйте ",[29,608,474],{},[610,611,612],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":103,"searchDepth":337,"depth":337,"links":614},[615,616,617,625,626,636,641],{"id":22,"depth":337,"text":23},{"id":47,"depth":337,"text":48},{"id":87,"depth":337,"text":88,"children":618},[619,621,622,623,624],{"id":92,"depth":620,"text":93},3,{"id":153,"depth":620,"text":154},{"id":217,"depth":620,"text":218},{"id":272,"depth":620,"text":273},{"id":304,"depth":620,"text":305},{"id":360,"depth":337,"text":361},{"id":397,"depth":337,"text":398,"children":627},[628,630,631,633,634],{"id":401,"depth":620,"text":629},"Ошибка: \"No such file or directory\" при запуске ldconfig",{"id":417,"depth":620,"text":418},{"id":430,"depth":620,"text":632},"Библиотека есть в каталоге, но ldconfig её не находит",{"id":460,"depth":620,"text":461},{"id":471,"depth":620,"text":635},"LD_LIBRARY_PATH не работает",{"id":484,"depth":337,"text":485,"children":637},[638,639,640],{"id":488,"depth":620,"text":489},{"id":516,"depth":620,"text":517},{"id":552,"depth":620,"text":553},{"id":586,"depth":337,"text":587},null,"2026-02-16 09:57:55","Узнайте, как правильно использовать утилиту ldconfig для настройки динамических библиотек в Linux. Пошаговая инструкция с примерами и решением частых ошибок. Начните работать за 5 минут!","easy",false,"10-15 мин","md",[650,653,656,659],{"question":651,"answer":652},"Что именно делает команда ldconfig?","`ldconfig` обновляет кэш linker'а (`/etc/ld.so.cache`), который содержит список доступных динамических библиотек и их расположений. Это позволяет программам находить нужные `.so`-файлы во время выполнения без указания полного пути.",{"question":654,"answer":655},"Нужно ли запускать ldconfig после установки каждой библиотеки вручную?","Обычно нет. Пакетные менеджеры (`apt`, `yum`, `dnf`) автоматически запускают `ldconfig` после установки пакета с библиотеками. Но если вы копируете `.so`-файл вручную или добавляете нестандартный путь, запуск `ldconfig` обязателен.",{"question":657,"answer":658},"Как временно добавить путь к библиотекам без редактирования конфигов?","Используйте переменную окружения `LD_LIBRARY_PATH`. Например: `export LD_LIBRARY_PATH=/home/user/mylibs:$LD_LIBRARY_PATH`. Это решение действует только в текущей сессии терминала.",{"question":660,"answer":661},"Почему после добавления пути ldconfig всё равно не находит библиотеку?","Частые причины: 1) В конфигурационном файле указан неверный путь или отсутствуют права на чтение. 2) Вы редактировали файл, но забыли запустить `ldconfig`. 3) Имя библиотеки в каталоге не соответствует ожидаемому (например, `libfoo.so.1.2` вместо `libfoo.so`).",[663,666,669,672],{"name":664,"text":665},"Проверьте текущий кэш библиотек","Узнайте, какие библиотеки и пути уже известны системе. Команда `ldconfig -p` выведет весь кэш. Это поможет понять, добавлен ли нужный путь.",{"name":667,"text":668},"Добавьте новый каталог с библиотеками","Создайте конфигурационный файл в `/etc/ld.so.conf.d/` (например, `custom.conf`) и укажите в нём абсолютный путь к каталогу с библиотеками. Это безопаснее, чем редактировать основной файл `/etc/ld.so.conf`.",{"name":670,"text":671},"Обновите кэш","Запустите `sudo ldconfig` для перестроения кэша. Используйте флаг `-v` для подробного вывода, чтобы увидеть, какие каталоги обрабатываются.",{"name":673,"text":674},"Проверьте, что библиотека обнаружена","Выполните `ldconfig -p | grep \u003Cимя_библиотеки>` (например, `ldconfig -p | grep libssl`). Если библиотека есть в списке, значит, путь добавлен корректно.","PT15M",[677,678,679,680,681,682,683,684,685,686],"ldconfig команда","как использовать ldconfig","обновление кэша библиотек linux","ошибка библиотека не найдена ldconfig","настройка LD_LIBRARY_PATH","динамические библиотеки linux","ldconfig примеры","пути библиотек linux","ldconfig добавить путь","библиотеки не находятся","ru_RU",{},true,"/guides/linux/ldconfig-usage","linux",[693,694,695],"/guides/linux/ldd-usage","/guides/linux/library-path","/errors/linux/error-ld.so-not-found","Гайды Linux",{"title":5,"description":644},"guides/linux/ldconfig-usage","Этот гайд подробно объясняет, как управлять кэшем динамических библиотек с помощью ldconfig. Вы научитесь добавлять пути, обновлять кэш и диагностировать проблемы с загрузкой библиотек.",[701,702,703,40,704,705],"библиотеки","линукс","администрирование","shared libraries","dynamic linking","guide","x1l8Lqq8HhLw4MHeGF2VpokJrdRlAIE-2OnQS9dOCP8",{"data":709,"body":710},{},{"type":711,"children":712},"root",[713],{"type":714,"tag":25,"props":715,"children":716},"element",{},[717,723,725,731,733,738],{"type":714,"tag":29,"props":718,"children":720},{"className":719},[],[721],{"type":722,"value":40},"text",{"type":722,"value":724}," обновляет кэш linker'а (",{"type":714,"tag":29,"props":726,"children":728},{"className":727},[],[729],{"type":722,"value":730},"/etc/ld.so.cache",{"type":722,"value":732},"), который содержит список доступных динамических библиотек и их расположений. Это позволяет программам находить нужные ",{"type":714,"tag":29,"props":734,"children":736},{"className":735},[],[737],{"type":722,"value":31},{"type":722,"value":739},"-файлы во время выполнения без указания полного пути.",{"data":741,"body":742},{},{"type":711,"children":743},[744],{"type":714,"tag":25,"props":745,"children":746},{},[747,749,755,757,763,764,770,772,777,779,784,786,791],{"type":722,"value":748},"Обычно нет. Пакетные менеджеры (",{"type":714,"tag":29,"props":750,"children":752},{"className":751},[],[753],{"type":722,"value":754},"apt",{"type":722,"value":756},", ",{"type":714,"tag":29,"props":758,"children":760},{"className":759},[],[761],{"type":722,"value":762},"yum",{"type":722,"value":756},{"type":714,"tag":29,"props":765,"children":767},{"className":766},[],[768],{"type":722,"value":769},"dnf",{"type":722,"value":771},") автоматически запускают ",{"type":714,"tag":29,"props":773,"children":775},{"className":774},[],[776],{"type":722,"value":40},{"type":722,"value":778}," после установки пакета с библиотеками. Но если вы копируете ",{"type":714,"tag":29,"props":780,"children":782},{"className":781},[],[783],{"type":722,"value":31},{"type":722,"value":785},"-файл вручную или добавляете нестандартный путь, запуск ",{"type":714,"tag":29,"props":787,"children":789},{"className":788},[],[790],{"type":722,"value":40},{"type":722,"value":792}," обязателен.",{"data":794,"body":795},{},{"type":711,"children":796},[797],{"type":714,"tag":25,"props":798,"children":799},{},[800,802,807,809,815],{"type":722,"value":801},"Используйте переменную окружения ",{"type":714,"tag":29,"props":803,"children":805},{"className":804},[],[806],{"type":722,"value":474},{"type":722,"value":808},". Например: ",{"type":714,"tag":29,"props":810,"children":812},{"className":811},[],[813],{"type":722,"value":814},"export LD_LIBRARY_PATH=/home/user/mylibs:$LD_LIBRARY_PATH",{"type":722,"value":816},". Это решение действует только в текущей сессии терминала.",{"data":818,"body":819},{},{"type":711,"children":820},[821],{"type":714,"tag":25,"props":822,"children":823},{},[824,826,831,833,839,841,847],{"type":722,"value":825},"Частые причины: 1) В конфигурационном файле указан неверный путь или отсутствуют права на чтение. 2) Вы редактировали файл, но забыли запустить ",{"type":714,"tag":29,"props":827,"children":829},{"className":828},[],[830],{"type":722,"value":40},{"type":722,"value":832},". 3) Имя библиотеки в каталоге не соответствует ожидаемому (например, ",{"type":714,"tag":29,"props":834,"children":836},{"className":835},[],[837],{"type":722,"value":838},"libfoo.so.1.2",{"type":722,"value":840}," вместо ",{"type":714,"tag":29,"props":842,"children":844},{"className":843},[],[845],{"type":722,"value":846},"libfoo.so",{"type":722,"value":457},{"data":849,"body":850},{},{"type":711,"children":851},[852],{"type":714,"tag":25,"props":853,"children":854},{},[855,857,862],{"type":722,"value":856},"Узнайте, какие библиотеки и пути уже известны системе. Команда ",{"type":714,"tag":29,"props":858,"children":860},{"className":859},[],[861],{"type":722,"value":605},{"type":722,"value":863}," выведет весь кэш. Это поможет понять, добавлен ли нужный путь.",{"data":865,"body":866},{},{"type":711,"children":867},[868],{"type":714,"tag":25,"props":869,"children":870},{},[871,873,878,880,886,888,894],{"type":722,"value":872},"Создайте конфигурационный файл в ",{"type":714,"tag":29,"props":874,"children":876},{"className":875},[],[877],{"type":722,"value":170},{"type":722,"value":879}," (например, ",{"type":714,"tag":29,"props":881,"children":883},{"className":882},[],[884],{"type":722,"value":885},"custom.conf",{"type":722,"value":887},") и укажите в нём абсолютный путь к каталогу с библиотеками. Это безопаснее, чем редактировать основной файл ",{"type":714,"tag":29,"props":889,"children":891},{"className":890},[],[892],{"type":722,"value":893},"/etc/ld.so.conf",{"type":722,"value":41},{"data":896,"body":897},{},{"type":711,"children":898},[899],{"type":714,"tag":25,"props":900,"children":901},{},[902,904,909,911,916],{"type":722,"value":903},"Запустите ",{"type":714,"tag":29,"props":905,"children":907},{"className":906},[],[908],{"type":722,"value":467},{"type":722,"value":910}," для перестроения кэша. Используйте флаг ",{"type":714,"tag":29,"props":912,"children":914},{"className":913},[],[915],{"type":722,"value":239},{"type":722,"value":917}," для подробного вывода, чтобы увидеть, какие каталоги обрабатываются.",{"data":919,"body":920},{},{"type":711,"children":921},[922],{"type":714,"tag":25,"props":923,"children":924},{},[925,927,933,934,940],{"type":722,"value":926},"Выполните ",{"type":714,"tag":29,"props":928,"children":930},{"className":929},[],[931],{"type":722,"value":932},"ldconfig -p | grep \u003Cимя_библиотеки>",{"type":722,"value":879},{"type":714,"tag":29,"props":935,"children":937},{"className":936},[],[938],{"type":722,"value":939},"ldconfig -p | grep libssl",{"type":722,"value":941},"). Если библиотека есть в списке, значит, путь добавлен корректно.",[943,1701,2641],{"id":944,"title":945,"appliesTo":946,"author":11,"body":949,"canonical":642,"code":642,"createdAt":1646,"description":1647,"difficulty":645,"draft":646,"estimatedTime":1648,"extension":648,"faq":1649,"howToSteps":1662,"howToTotalTime":1678,"image":642,"keywords":1679,"locale":687,"meta":1690,"navigation":689,"path":693,"platform":691,"related":1691,"section":696,"seo":1694,"severity":642,"stem":1695,"summary":1696,"tags":1697,"twitterCreator":642,"twitterSite":642,"type":706,"updatedAt":1646,"__hash__":1700},"content_ru/guides/linux/ldd-usage.md","Как использовать ldd для анализа зависимостей библиотек в Linux",[947,948],"Linux (Ubuntu 22.04+, CentOS 7+, Debian 11+)","Любой дистрибутив с установленной утилитой ldd",{"type":13,"value":950,"toc":1633},[951,953,969,990,993,995,998,1053,1055,1059,1062,1074,1079,1086,1089,1117,1121,1155,1159,1166,1303,1307,1376,1380,1458,1460,1462,1465,1492,1495,1497,1621,1630],[20,952,23],{"id":22},[25,954,590,955,957,958,961,962,965,966,968],{},[29,956,373],{}," (List Dynamic Dependencies) — это стандартный инструмент в Linux для просмотра ",[34,959,960],{},"динамических зависимостей"," исполняемого файла. Она показывает, какие ",[34,963,964],{},"разделяемые библиотеки"," (файлы ",[29,967,31],{},") требуется загрузить программе при запуске. Это незаменимо для:",[53,970,971,977,980],{},[56,972,973,974,41],{},"Диагностики ошибок ",[29,975,976],{},"error while loading shared libraries: libXYZ.so: cannot open shared object file",[56,978,979],{},"Понимания, какие пакеты нужно установить на чистую систему.",[56,981,982,983,986,987,41],{},"Проверки целостности бинарника и обнаружения потенциальных проблем с ",[29,984,985],{},"RPATH","/",[29,988,989],{},"RUNPATH",[25,991,992],{},"После выполнения этого гайда вы сможете быстро находить и устранять проблемы с отсутствующими библиотеками.",[20,994,48],{"id":47},[25,996,997],{},"Перед началом убедитесь, что:",[436,999,1000,1007,1033,1044],{},[56,1001,1002,1003,1006],{},"У вас есть доступ к ",[34,1004,1005],{},"терминалу Linux"," (Ubuntu, CentOS, Fedora, Debian и т.д.).",[56,1008,1009,1010,1012,1013,1016,1017,1020,1021],{},"Установлена утилита ",[29,1011,373],{},". Обычно она входит в пакет ",[29,1014,1015],{},"libc6"," (Debian/Ubuntu) или ",[29,1018,1019],{},"glibc"," (RHEL/CentOS). Проверить можно командой:\n",[98,1022,1024],{"className":100,"code":1023,"language":102,"meta":103,"style":103},"ldd --version\n",[29,1025,1026],{"__ignoreMap":103},[107,1027,1028,1030],{"class":109,"line":110},[107,1029,373],{"class":113},[107,1031,1032],{"class":116}," --version\n",[56,1034,1035,1036,1039,1040,1043],{},"У вас есть ",[34,1037,1038],{},"исполняемый файл"," (ELF-формат), который нужно проанализировать. Это может быть любой бинарник в системе, например ",[29,1041,1042],{},"/usr/bin/ls"," или ваш собственный скомпилированный файл.",[56,1045,1035,1046,1049,1050,1052],{},[34,1047,1048],{},"права на чтение"," файла. Если файл принадлежит другому пользователю, используйте ",[29,1051,68],{}," или скопируйте его в свою директорию.",[20,1054,88],{"id":87},[90,1056,1058],{"id":1057},"шаг-1-базовый-запуск-ldd","Шаг 1: Базовый запуск ldd",[25,1060,1061],{},"Просто укажите путь к исполняемому файлу:",[98,1063,1065],{"className":100,"code":1064,"language":102,"meta":103,"style":103},"ldd /bin/ls\n",[29,1066,1067],{"__ignoreMap":103},[107,1068,1069,1071],{"class":109,"line":110},[107,1070,373],{"class":113},[107,1072,1073],{"class":146}," /bin/ls\n",[25,1075,1076],{},[34,1077,1078],{},"Пример вывода:",[98,1080,1084],{"className":1081,"code":1083,"language":722},[1082],"language-text","linux-vdso.so.1 (0x00007ffd6d7f9000)\nlibselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f8c1a400000)\nlibc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8c19e00000)\nlibpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f8c19a00000)\n/lib64/ld-linux-x86-64.so.2 (0x00007f8c1a800000)\n",[29,1085,1083],{"__ignoreMap":103},[25,1087,1088],{},"Каждая строка содержит:",[53,1090,1091,1099,1111],{},[56,1092,1093,879,1096,457],{},[34,1094,1095],{},"Имя библиотеки",[29,1097,1098],{},"libc.so.6",[56,1100,1101,262,1107,1110],{},[34,1102,1103,1104],{},"Стрелка ",[29,1105,1106],{},"=>",[34,1108,1109],{},"полный путь",", по которому библиотека будет загружена.",[56,1112,1113,1116],{},[34,1114,1115],{},"Адрес в памяти"," (в скобках), если библиотека уже загружена в текущем процессе (может отличаться при каждом запуске).",[90,1118,1120],{"id":1119},"шаг-2-интерпретация-ключевых-элементов","Шаг 2: Интерпретация ключевых элементов",[53,1122,1123,1131,1139],{},[56,1124,1125,1130],{},[34,1126,1127],{},[29,1128,1129],{},"linux-vdso.so.1"," — виртуальная динамическая библиотека, предоставляемая ядром (не реальный файл на диске).",[56,1132,1133,1138],{},[34,1134,1135],{},[29,1136,1137],{},"/lib64/ld-linux-x86-64.so.2"," — динамический загрузчик (интерпретатор), без него программа не запустится.",[56,1140,1141,1142,1147,1148,756,1151,756,1153,457],{},"Если вместо пути указано ",[34,1143,1144],{},[29,1145,1146],{},"not found",", библиотека отсутствует в стандартных путях поиска (",[29,1149,1150],{},"/lib",[29,1152,495],{},[29,1154,474],{},[90,1156,1158],{"id":1157},"шаг-3-обработка-отсутствующих-библиотек","Шаг 3: Обработка отсутствующих библиотек",[25,1160,1161,1162,1165],{},"Если в выводе есть строки вида ",[29,1163,1164],{},"libsomething.so => not found",", выполните:",[436,1167,1168,1239,1280,1295],{},[56,1169,1170,1173,1174,1190,1193,1194,1196,1197,41,1200,1202,1203,1221,1223,1224],{},[34,1171,1172],{},"Найдите пакет",", содержащий библиотеку. Для Debian/Ubuntu:",[98,1175,1177],{"className":100,"code":1176,"language":102,"meta":103,"style":103},"apt-file search libsomething.so\n",[29,1178,1179],{"__ignoreMap":103},[107,1180,1181,1184,1187],{"class":109,"line":110},[107,1182,1183],{"class":113},"apt-file",[107,1185,1186],{"class":146}," search",[107,1188,1189],{"class":146}," libsomething.so\n",[1191,1192],"br",{},"Если ",[29,1195,1183],{}," не установлен,先 установите его: ",[29,1198,1199],{},"sudo apt update && sudo apt install apt-file && sudo apt-file update",[1191,1201],{},"Для RHEL/CentOS/Fedora:",[98,1204,1206],{"className":100,"code":1205,"language":102,"meta":103,"style":103},"yum provides */libsomething.so\n",[29,1207,1208],{"__ignoreMap":103},[107,1209,1210,1212,1215,1218],{"class":109,"line":110},[107,1211,762],{"class":113},[107,1213,1214],{"class":146}," provides",[107,1216,1217],{"class":116}," *",[107,1219,1220],{"class":146},"/libsomething.so\n",[1191,1222],{},"или",[98,1225,1227],{"className":100,"code":1226,"language":102,"meta":103,"style":103},"dnf provides */libsomething.so\n",[29,1228,1229],{"__ignoreMap":103},[107,1230,1231,1233,1235,1237],{"class":109,"line":110},[107,1232,769],{"class":113},[107,1234,1214],{"class":146},[107,1236,1217],{"class":116},[107,1238,1220],{"class":146},[56,1240,1241,124,1244],{},[34,1242,1243],{},"Установите найденный пакет",[98,1245,1247],{"className":100,"code":1246,"language":102,"meta":103,"style":103},"sudo apt install имя_пакета   # Debian/Ubuntu\nsudo yum install имя_пакета   # RHEL/CentOS\n",[29,1248,1249,1266],{"__ignoreMap":103},[107,1250,1251,1253,1256,1259,1262],{"class":109,"line":110},[107,1252,68],{"class":113},[107,1254,1255],{"class":146}," apt",[107,1257,1258],{"class":146}," install",[107,1260,1261],{"class":146}," имя_пакета",[107,1263,1265],{"class":1264},"sJ8bj","   # Debian/Ubuntu\n",[107,1267,1268,1270,1273,1275,1277],{"class":109,"line":337},[107,1269,68],{"class":113},[107,1271,1272],{"class":146}," yum",[107,1274,1258],{"class":146},[107,1276,1261],{"class":146},[107,1278,1279],{"class":1264},"   # RHEL/CentOS\n",[56,1281,1282,124,1285],{},[34,1283,1284],{},"Обновите кэш библиотек",[98,1286,1287],{"className":100,"code":224,"language":102,"meta":103,"style":103},[29,1288,1289],{"__ignoreMap":103},[107,1290,1291,1293],{"class":109,"line":110},[107,1292,68],{"class":113},[107,1294,233],{"class":146},[56,1296,1297,1300,1301,41],{},[34,1298,1299],{},"Повторно проверьте"," файл командой ",[29,1302,373],{},[90,1304,1306],{"id":1305},"шаг-4-использование-опций-для-расширенного-анализа","Шаг 4: Использование опций для расширенного анализа",[53,1308,1309,1336,1366],{},[56,1310,1311,1316,1317,1320,1321],{},[34,1312,1313,1315],{},[29,1314,239],{}," (verbose)"," — показывает ",[34,1318,1319],{},"все"," совпадения библиотек, включая дубликаты, и версии.",[98,1322,1324],{"className":100,"code":1323,"language":102,"meta":103,"style":103},"ldd -v /usr/bin/ssh\n",[29,1325,1326],{"__ignoreMap":103},[107,1327,1328,1330,1333],{"class":109,"line":110},[107,1329,373],{"class":113},[107,1331,1332],{"class":116}," -v",[107,1334,1335],{"class":146}," /usr/bin/ssh\n",[56,1337,1338,1343,1344,1347,1348,1351,1352],{},[34,1339,1340],{},[29,1341,1342],{},"-u"," — выводит ",[34,1345,1346],{},"неиспользуемые"," прямые зависимости (полезно для очистки ",[29,1349,1350],{},"DT_NEEDED"," в ELF-заголовке).",[98,1353,1355],{"className":100,"code":1354,"language":102,"meta":103,"style":103},"ldd -u /usr/bin/ssh\n",[29,1356,1357],{"__ignoreMap":103},[107,1358,1359,1361,1364],{"class":109,"line":110},[107,1360,373],{"class":113},[107,1362,1363],{"class":116}," -u",[107,1365,1335],{"class":146},[56,1367,1368,1373,1374,41],{},[34,1369,1370],{},[29,1371,1372],{},"--version"," — показывает версию утилиты ",[29,1375,373],{},[90,1377,1379],{"id":1378},"шаг-5-безопасность-и-альтернативы","Шаг 5: Безопасность и альтернативы",[206,1381,1382,1406,1428,1430,1451],{},[25,1383,1384,1385,1388,1389,1391,1392,1395,1396,986,1399,1402,1403,1405],{},"⚠️ ",[34,1386,1387],{},"Важно",": Запуск ",[29,1390,373],{}," на ",[34,1393,1394],{},"недоверенных"," исполняемых файлах может быть опасен! Некоторые бинарники могут выполнить код через ",[29,1397,1398],{},"DT_RPATH",[29,1400,1401],{},"DT_RUNPATH",". Вместо ",[29,1404,373],{}," для безопасности используйте:",[98,1407,1409],{"className":100,"code":1408,"language":102,"meta":103,"style":103},"objdump -p /path/to/file | grep NEEDED\n",[29,1410,1411],{"__ignoreMap":103},[107,1412,1413,1416,1418,1421,1423,1425],{"class":109,"line":110},[107,1414,1415],{"class":113},"objdump",[107,1417,136],{"class":116},[107,1419,1420],{"class":146}," /path/to/file",[107,1422,140],{"class":139},[107,1424,143],{"class":113},[107,1426,1427],{"class":146}," NEEDED\n",[25,1429,1223],{},[98,1431,1433],{"className":100,"code":1432,"language":102,"meta":103,"style":103},"readelf -d /path/to/file | grep NEEDED\n",[29,1434,1435],{"__ignoreMap":103},[107,1436,1437,1440,1443,1445,1447,1449],{"class":109,"line":110},[107,1438,1439],{"class":113},"readelf",[107,1441,1442],{"class":116}," -d",[107,1444,1420],{"class":146},[107,1446,140],{"class":139},[107,1448,143],{"class":113},[107,1450,1427],{"class":146},[25,1452,1453,1454,1457],{},"Эти команды только ",[34,1455,1456],{},"читают"," ELF-заголовок, не выполняя никакого кода.",[480,1459],{},[20,1461,361],{"id":360},[25,1463,1464],{},"Успешный результат:",[53,1466,1467,1479,1485],{},[56,1468,1469,1470,1472,1473,1476,1477,41],{},"В выводе ",[29,1471,373],{}," ",[34,1474,1475],{},"отсутствуют"," строки с ",[29,1478,1146],{},[56,1480,1481,1482,41],{},"Все библиотеки имеют ",[34,1483,1484],{},"полные пути",[56,1486,1487,1488,1491],{},"Динамический загрузчик (",[29,1489,1490],{},"ld-linux.so",") указан корректно.",[25,1493,1494],{},"Если вы устанавливали недостающие библиотеки, перезапустите программу, чтобы убедиться, что она запускается без ошибок.",[20,1496,398],{"id":397},[1498,1499,1500,1516],"table",{},[1501,1502,1503],"thead",{},[1504,1505,1506,1510,1513],"tr",{},[1507,1508,1509],"th",{},"Проблема",[1507,1511,1512],{},"Симптомы",[1507,1514,1515],{},"Решение",[1517,1518,1519,1537,1555,1574,1597],"tbody",{},[1504,1520,1521,1527,1532],{},[1522,1523,1524],"td",{},[34,1525,1526],{},"Библиотека не найдена",[1522,1528,1529],{},[29,1530,1531],{},"libXYZ.so => not found",[1522,1533,1534,1535,41],{},"Установите пакет, содержащий библиотеку, и выполните ",[29,1536,467],{},[1504,1538,1539,1544,1549],{},[1522,1540,1541],{},[34,1542,1543],{},"Неправильная архитектура",[1522,1545,1546],{},[29,1547,1548],{},"ldd: /path/file: failed to load module: invalid ELF header",[1522,1550,1551,1552,457],{},"Файл скомпилирован для другой архитектуры (например, 32-битный на 64-битной системе). Установите совместимые библиотеки (например, ",[29,1553,1554],{},"libc6-i386",[1504,1556,1557,1562,1568],{},[1522,1558,1559],{},[34,1560,1561],{},"Статический бинарник",[1522,1563,1564,1567],{},[29,1565,1566],{},"statically linked"," в выводе",[1522,1569,1570,1571,1573],{},"Библиотеки встроены в файл. Зависимости отсутствуют, ",[29,1572,373],{}," не применим.",[1504,1575,1576,1581,1586],{},[1522,1577,1578],{},[34,1579,1580],{},"Нет прав на чтение",[1522,1582,1583],{},[29,1584,1585],{},"ldd: /path/file: Permission denied",[1522,1587,1588,1589,1592,1593,1596],{},"Добавьте права: ",[29,1590,1591],{},"chmod +r /path/file"," или используйте ",[29,1594,1595],{},"sudo ldd /path/file"," (осторожно!).",[1504,1598,1599,1604,1607],{},[1522,1600,1601],{},[34,1602,1603],{},"Устаревшая версия ldd",[1522,1605,1606],{},"Неожиданный формат вывода или ошибки",[1522,1608,1609,1610,986,1612,1614,1615,354,1618,41],{},"Обновите пакет ",[29,1611,1015],{},[29,1613,1019],{},": ",[29,1616,1617],{},"sudo apt upgrade libc6",[29,1619,1620],{},"sudo yum update glibc",[25,1622,1623,1624,262,1626,1629],{},"Если проблема не решена, проверьте переменные окружения ",[29,1625,474],{},[29,1627,1628],{},"LD_DEBUG"," для детальной диагностики загрузки библиотек.",[610,1631,1632],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":103,"searchDepth":337,"depth":337,"links":1634},[1635,1636,1637,1644,1645],{"id":22,"depth":337,"text":23},{"id":47,"depth":337,"text":48},{"id":87,"depth":337,"text":88,"children":1638},[1639,1640,1641,1642,1643],{"id":1057,"depth":620,"text":1058},{"id":1119,"depth":620,"text":1120},{"id":1157,"depth":620,"text":1158},{"id":1305,"depth":620,"text":1306},{"id":1378,"depth":620,"text":1379},{"id":360,"depth":337,"text":361},{"id":397,"depth":337,"text":398},"2026-02-17 11:10:27","Узнайте, как с помощью ldd найти все зависимости исполняемого файла. Пошаговая инструкция с примерами и советами по безопасности. Начните анализировать библиотеки за 5 минут!","5-10 мин",[1650,1653,1656,1659],{"question":1651,"answer":1652},"Зачем вообще нужна команда ldd?","ldd показывает, какие динамические библиотеки (.so файлы) требует для работы исполняемый файл. Это помогает диагностировать ошибки 'library not found' и понять, какие пакеты нужно установить.",{"question":1654,"answer":1655},"Можно ли использовать ldd для статических бинарников?","Нет. Для статически скомпилированных файлов ldd выведет сообщение 'statically linked', так как все библиотеки уже встроены в бинарник.",{"question":1657,"answer":1658},"Безопасно ли запускать ldd на неизвестных файлах?","Не всегда. ldd может выполнить код из библиотек, если бинарник содержит специальные директивы (например, DT_RPATH). Для безопасности используйте `ldd --verify` или анализатор `objdump -p`.",{"question":1660,"answer":1661},"Что делать, если ldd показывает 'not found' для библиотеки?","Установите соответствующий пакет (например, `sudo apt install libssl1.1`), проверьте переменную окружения `LD_LIBRARY_PATH` или обновите кэш библиотек командой `sudo ldconfig`.",[1663,1666,1669,1672,1675],{"name":1664,"text":1665},"Проверьте наличие утилиты ldd","Откройте терминал и выполните `ldd --version`. Если команда не найдена, установите пакет `libc6` (Debian/Ubuntu) или `glibc` (RHEL/CentOS).",{"name":1667,"text":1668},"Запустите ldd на целевом исполняемом файле","Введите `ldd /путь/к/файлу`. Убедитесь, что у вас есть права на чтение файла (используйте `ls -l` для проверки).",{"name":1670,"text":1671},"Проанализируйте вывод","Каждая строка вывода показывает имя библиотеки и адрес, по которому она будет загружена. Обратите внимание на записи 'not found' — они указывают на отсутствующие зависимости.",{"name":1673,"text":1674},"Установите недостающие библиотеки","Для каждой библиотеки с 'not found' найдите принадлежащий ей пакет. В Debian/Ubuntu используйте `apt-file search имя_библиотеки.so`, в RHEL/CentOS — `yum provides */имя_библиотеки.so`.",{"name":1676,"text":1677},"Используйте дополнительные опции для детального анализа","Добавьте флаг `-v` для вывода версий библиотек или `-u` для отображения неиспользуемых прямых зависимостей. Пример: `ldd -v /usr/bin/ssh`.","PT10M",[1680,1681,1682,1683,1684,1685,1686,1687,1688,1689],"ldd команда","как использовать ldd","зависимости библиотек linux","анализ исполняемого файла ldd","ldd вывод","недостающие библиотеки linux","динамические библиотеки ldd","проверка зависимостей linux","ldd примеры","утилита ldd",{},[1692,1693],"/guides/linux/checking-library-dependencies","/guides/linux/understanding-elf-format",{"title":945,"description":1647},"guides/linux/ldd-usage","Это руководство объясняет, как использовать утилиту ldd для отображения зависимостей динамических библиотек в Linux. Вы научитесь анализировать исполняемые файлы и находить недостающие библиотеки.",[702,701,1698,1699,373,705,704],"команда","зависимости","CBxc7sXYsXVTa5vXPCFvnLrTGkY5z5ZBjMzTme_WU58",{"id":1702,"title":1703,"appliesTo":1704,"author":11,"body":1707,"canonical":642,"code":642,"createdAt":2589,"description":2590,"difficulty":2591,"draft":646,"estimatedTime":647,"extension":648,"faq":2592,"howToSteps":2605,"howToTotalTime":675,"image":642,"keywords":2621,"locale":687,"meta":2630,"navigation":689,"path":694,"platform":691,"related":2631,"section":696,"seo":2633,"severity":642,"stem":2634,"summary":2635,"tags":2636,"twitterCreator":642,"twitterSite":642,"type":706,"updatedAt":2589,"__hash__":2640},"content_ru/guides/linux/library-path.md","Настройка библиотечных путей в Linux: LD_LIBRARY_PATH и ldconfig",[7,8,9,1705,1706],"RHEL 8+","Linux в целом",{"type":13,"value":1708,"toc":2571},[1709,1711,1730,1733,1747,1749,1751,1784,1787,1789,1793,1796,1864,1882,1886,1893,1934,1938,1953,1957,1960,2049,2066,2068,2072,2079,2163,2168,2192,2196,2199,2283,2285,2287,2293,2315,2319,2339,2353,2386,2407,2429,2433,2442,2470,2474,2496,2568],[20,1710,23],{"id":22},[25,1712,1713,1714,1716,1717,1720,1721,756,1723,1725,1726,1729],{},"Динамические библиотеки (файлы ",[29,1715,31],{}," в Linux) — это ключевой механизм для экономии памяти и упрощения обновлений программ. Однако система должна знать, ",[34,1718,1719],{},"где искать эти библиотеки",". По умолчанию проверяются стандартные каталоги (",[29,1722,1150],{},[29,1724,495],{}," и др.), но если вы устанавливаете ПО в нестандартное место (например, ",[29,1727,1728],{},"/opt/app/lib","), нужно явно указать этот путь.",[25,1731,1732],{},"Этот гайд объясняет, как добавить пользовательские каталоги в путь поиска библиотек тремя основными методами. После выполнения вы сможете:",[53,1734,1735,1738,1741],{},[56,1736,1737],{},"Запускать программы, которые используют несистемные библиотеки.",[56,1739,1740],{},"Развертывать собственные сборки ПО без конфликтов.",[56,1742,1743,1744,41],{},"Диагностировать ошибки ",[29,1745,1746],{},"error while loading shared libraries",[20,1748,48],{"id":47},[25,1750,997],{},[436,1752,1753,1759,1767,1778],{},[56,1754,1035,1755,1758],{},[34,1756,1757],{},"доступ к терминалу"," (SSH или локальная консоль).",[56,1760,1761,1762,65,1765,457],{},"Для системных изменений (метод 3) потребуются ",[34,1763,1764],{},"права суперпользователя",[29,1766,68],{},[56,1768,1769,1770,1773,1774,1777],{},"Вы знаете ",[34,1771,1772],{},"абсолютный путь"," к каталогу с библиотеками (например, ",[29,1775,1776],{},"/home/user/myproject/lib","). Относительные пути не работают.",[56,1779,1780,1781,1783],{},"В этом каталоге находятся файлы с расширением ",[29,1782,31],{}," (или симлинки на них).",[1785,1786],"hr",{},[20,1788,88],{"id":87},[90,1790,1792],{"id":1791},"шаг-1-проверка-текущих-настроек","Шаг 1: Проверка текущих настроек",[25,1794,1795],{},"Прежде чем вносить изменения, посмотрите, какие пути уже настроены.",[98,1797,1799],{"className":100,"code":1798,"language":102,"meta":103,"style":103},"# 1. Проверка переменной LD_LIBRARY_PATH (если пуста — вывод будет пустым)\necho \"Текущий LD_LIBRARY_PATH: $LD_LIBRARY_PATH\"\n\n# 2. Просмотр системных путей из конфигурации ld.so\n# -v: подробный вывод, 2>/dev/null: подавляем предупреждения о 32-битных библиотеках\nldconfig -v 2>/dev/null | grep -v '^\\s' | head -20\n",[29,1800,1801,1806,1817,1822,1828,1834],{"__ignoreMap":103},[107,1802,1803],{"class":109,"line":110},[107,1804,1805],{"class":1264},"# 1. Проверка переменной LD_LIBRARY_PATH (если пуста — вывод будет пустым)\n",[107,1807,1808,1810,1813,1815],{"class":109,"line":337},[107,1809,180],{"class":116},[107,1811,1812],{"class":146}," \"Текущий LD_LIBRARY_PATH: ",[107,1814,331],{"class":321},[107,1816,334],{"class":146},[107,1818,1819],{"class":109,"line":620},[107,1820,1821],{"emptyLinePlaceholder":689},"\n",[107,1823,1825],{"class":109,"line":1824},4,[107,1826,1827],{"class":1264},"# 2. Просмотр системных путей из конфигурации ld.so\n",[107,1829,1831],{"class":109,"line":1830},5,[107,1832,1833],{"class":1264},"# -v: подробный вывод, 2>/dev/null: подавляем предупреждения о 32-битных библиотеках\n",[107,1835,1837,1839,1841,1844,1847,1849,1851,1853,1856,1858,1861],{"class":109,"line":1836},6,[107,1838,40],{"class":113},[107,1840,1332],{"class":116},[107,1842,1843],{"class":139}," 2>",[107,1845,1846],{"class":146},"/dev/null",[107,1848,140],{"class":139},[107,1850,143],{"class":113},[107,1852,1332],{"class":116},[107,1854,1855],{"class":146}," '^\\s'",[107,1857,140],{"class":139},[107,1859,1860],{"class":113}," head",[107,1862,1863],{"class":116}," -20\n",[25,1865,1866,1869,1871,1872,1874,1875,756,1877,1879,1880,41],{},[34,1867,1868],{},"Что вы увидите:",[1191,1870],{},"\nПервая команда покажет пользовательские пути (если были установлены). Вторая — все каталоги, которые система знает после последнего запуска ",[29,1873,40],{},". Это стандартные пути (",[29,1876,1150],{},[29,1878,495],{},") и пути из файлов в ",[29,1881,170],{},[90,1883,1885],{"id":1884},"шаг-2-временное-добавление-пути-для-текущей-сессии","Шаг 2: Временное добавление пути (для текущей сессии)",[25,1887,1888,1889,1892],{},"Этот метод подходит для ",[34,1890,1891],{},"быстрой проверки"," или разового запуска программы. Путь действует только в текущем окне терминала.",[98,1894,1896],{"className":100,"code":1895,"language":102,"meta":103,"style":103},"# Замените /путь/к/библиотекам на ваш реальный путь\nexport LD_LIBRARY_PATH=\"/путь/к/библиотекам:$LD_LIBRARY_PATH\"\n\n# Проверьте, что переменная установилась\necho $LD_LIBRARY_PATH\n",[29,1897,1898,1903,1918,1922,1927],{"__ignoreMap":103},[107,1899,1900],{"class":109,"line":110},[107,1901,1902],{"class":1264},"# Замените /путь/к/библиотекам на ваш реальный путь\n",[107,1904,1905,1907,1909,1911,1914,1916],{"class":109,"line":337},[107,1906,318],{"class":139},[107,1908,322],{"class":321},[107,1910,325],{"class":139},[107,1912,1913],{"class":146},"\"/путь/к/библиотекам:",[107,1915,331],{"class":321},[107,1917,334],{"class":146},[107,1919,1920],{"class":109,"line":620},[107,1921,1821],{"emptyLinePlaceholder":689},[107,1923,1924],{"class":109,"line":1824},[107,1925,1926],{"class":1264},"# Проверьте, что переменная установилась\n",[107,1928,1929,1931],{"class":109,"line":1830},[107,1930,180],{"class":116},[107,1932,1933],{"class":321}," $LD_LIBRARY_PATH\n",[25,1935,1936],{},[34,1937,345],{},[53,1939,1940,1950],{},[56,1941,1942,1945,1946,1949],{},[29,1943,1944],{},":$LD_LIBRARY_PATH"," в конце добавляет новый путь ",[34,1947,1948],{},"в начало"," списка, что даёт ему приоритет.",[56,1951,1952],{},"После закрытия терминала настройка сбросится.",[90,1954,1956],{"id":1955},"шаг-3-постоянное-добавление-пути-для-текущего-пользователя","Шаг 3: Постоянное добавление пути для текущего пользователя",[25,1958,1959],{},"Чтобы изменения сохранялись между перезапусками, добавьте экспорт в файл конфигурации вашей оболочки.",[98,1961,1963],{"className":100,"code":1962,"language":102,"meta":103,"style":103},"# 1. Откройте файл ~/.bashrc (для bash) или ~/.zshrc (для zsh) в редакторе\nnano ~/.bashrc\n\n# 2. В конец файла добавьте строку (замените путь):\nexport LD_LIBRARY_PATH=\"/opt/mylibs:$LD_LIBRARY_PATH\"\n\n# 3. Сохраните (Ctrl+O, Enter) и закройте (Ctrl+X)\n\n# 4. Примените изменения к текущей сессии\nsource ~/.bashrc\n\n# 5. Проверьте\necho $LD_LIBRARY_PATH\n",[29,1964,1965,1970,1978,1982,1987,2002,2006,2012,2017,2023,2031,2036,2042],{"__ignoreMap":103},[107,1966,1967],{"class":109,"line":110},[107,1968,1969],{"class":1264},"# 1. Откройте файл ~/.bashrc (для bash) или ~/.zshrc (для zsh) в редакторе\n",[107,1971,1972,1975],{"class":109,"line":337},[107,1973,1974],{"class":113},"nano",[107,1976,1977],{"class":146}," ~/.bashrc\n",[107,1979,1980],{"class":109,"line":620},[107,1981,1821],{"emptyLinePlaceholder":689},[107,1983,1984],{"class":109,"line":1824},[107,1985,1986],{"class":1264},"# 2. В конец файла добавьте строку (замените путь):\n",[107,1988,1989,1991,1993,1995,1998,2000],{"class":109,"line":1830},[107,1990,318],{"class":139},[107,1992,322],{"class":321},[107,1994,325],{"class":139},[107,1996,1997],{"class":146},"\"/opt/mylibs:",[107,1999,331],{"class":321},[107,2001,334],{"class":146},[107,2003,2004],{"class":109,"line":1836},[107,2005,1821],{"emptyLinePlaceholder":689},[107,2007,2009],{"class":109,"line":2008},7,[107,2010,2011],{"class":1264},"# 3. Сохраните (Ctrl+O, Enter) и закройте (Ctrl+X)\n",[107,2013,2015],{"class":109,"line":2014},8,[107,2016,1821],{"emptyLinePlaceholder":689},[107,2018,2020],{"class":109,"line":2019},9,[107,2021,2022],{"class":1264},"# 4. Примените изменения к текущей сессии\n",[107,2024,2026,2029],{"class":109,"line":2025},10,[107,2027,2028],{"class":116},"source",[107,2030,1977],{"class":146},[107,2032,2034],{"class":109,"line":2033},11,[107,2035,1821],{"emptyLinePlaceholder":689},[107,2037,2039],{"class":109,"line":2038},12,[107,2040,2041],{"class":1264},"# 5. Проверьте\n",[107,2043,2045,2047],{"class":109,"line":2044},13,[107,2046,180],{"class":116},[107,2048,1933],{"class":321},[25,2050,2051,2054,2056,2057,2060,2061,354,2063,41],{},[34,2052,2053],{},"Примечание:",[1191,2055],{},"\nЭтот метод влияет ",[34,2058,2059],{},"только на вашего пользователя"," и только при запуске интерактивных оболочек. Для GUI-приложений может потребоваться добавление в ",[29,2062,357],{},[29,2064,2065],{},"~/.xprofile",[480,2067],{},[90,2069,2071],{"id":2070},"шаг-4-добавление-системного-пути-для-всех-пользователей","Шаг 4: Добавление системного пути (для всех пользователей)",[25,2073,2074,2075,2078],{},"Это ",[34,2076,2077],{},"рекомендуемый способ"," для библиотек, которые должны быть доступны всем программам и пользователям. Он более стабилен и не зависит от переменных окружения.",[98,2080,2082],{"className":100,"code":2081,"language":102,"meta":103,"style":103},"# 1. Создайте новый конфигурационный файл в /etc/ld.so.conf.d/\nsudo nano /etc/ld.so.conf.d/custom.conf\n\n# 2. Впишите абсолютный путь к каталогу с библиотеками (одна строка на путь):\n/usr/local/lib/mylibs\n\n# 3. Сохраните и закройте редактор.\n\n# 4. Обновите кэш ld.so (это обязательно!)\nsudo ldconfig\n\n# 5. Проверьте, что путь добавился:\nldconfig -v 2>/dev/null | grep mylibs\n",[29,2083,2084,2089,2099,2103,2108,2113,2117,2122,2126,2131,2137,2141,2146],{"__ignoreMap":103},[107,2085,2086],{"class":109,"line":110},[107,2087,2088],{"class":1264},"# 1. Создайте новый конфигурационный файл в /etc/ld.so.conf.d/\n",[107,2090,2091,2093,2096],{"class":109,"line":337},[107,2092,68],{"class":113},[107,2094,2095],{"class":146}," nano",[107,2097,2098],{"class":146}," /etc/ld.so.conf.d/custom.conf\n",[107,2100,2101],{"class":109,"line":620},[107,2102,1821],{"emptyLinePlaceholder":689},[107,2104,2105],{"class":109,"line":1824},[107,2106,2107],{"class":1264},"# 2. Впишите абсолютный путь к каталогу с библиотеками (одна строка на путь):\n",[107,2109,2110],{"class":109,"line":1830},[107,2111,2112],{"class":113},"/usr/local/lib/mylibs\n",[107,2114,2115],{"class":109,"line":1836},[107,2116,1821],{"emptyLinePlaceholder":689},[107,2118,2119],{"class":109,"line":2008},[107,2120,2121],{"class":1264},"# 3. Сохраните и закройте редактор.\n",[107,2123,2124],{"class":109,"line":2014},[107,2125,1821],{"emptyLinePlaceholder":689},[107,2127,2128],{"class":109,"line":2019},[107,2129,2130],{"class":1264},"# 4. Обновите кэш ld.so (это обязательно!)\n",[107,2132,2133,2135],{"class":109,"line":2025},[107,2134,68],{"class":113},[107,2136,233],{"class":146},[107,2138,2139],{"class":109,"line":2033},[107,2140,1821],{"emptyLinePlaceholder":689},[107,2142,2143],{"class":109,"line":2038},[107,2144,2145],{"class":1264},"# 5. Проверьте, что путь добавился:\n",[107,2147,2148,2150,2152,2154,2156,2158,2160],{"class":109,"line":2044},[107,2149,40],{"class":113},[107,2151,1332],{"class":116},[107,2153,1843],{"class":139},[107,2155,1846],{"class":146},[107,2157,140],{"class":139},[107,2159,143],{"class":113},[107,2161,2162],{"class":146}," mylibs\n",[25,2164,2165],{},[34,2166,2167],{},"Почему это лучше:",[53,2169,2170,2173,2180],{},[56,2171,2172],{},"Не требует настройки переменных окружения для каждого пользователя.",[56,2174,2175,2176,2179],{},"Работает для ",[34,2177,2178],{},"всех программ",", включая сервисы systemd и GUI-приложения.",[56,2181,2182,2183,262,2186,2189,2190,457],{},"Является стандартом для дистрибутивов (пакеты ",[29,2184,2185],{},".deb",[29,2187,2188],{},".rpm"," добавляют свои файлы в ",[29,2191,170],{},[90,2193,2195],{"id":2194},"шаг-5-проверка-корректности-настройки","Шаг 5: Проверка корректности настройки",[25,2197,2198],{},"После любого из методов выше проверьте, что система видит ваши библиотеки.",[98,2200,2202],{"className":100,"code":2201,"language":102,"meta":103,"style":103},"# Способ 1: Используйте ldd для конкретного исполняемого файла\n# Замените /usr/bin/ваша_программа на реальный путь\nldd /usr/bin/ваша_программа | grep \"не найдена\"\n\n# Если вывод пуст — все библиотеки найдены.\n# Если есть строки с \"не найдена\", значит, путь не настроен.\n\n# Способ 2: Запустите программу, которая ранее падала.\n# Она должна теперь работать.\n\n# Способ 3: Проверьте кэш ldconfig\nldconfig -p | grep имя_библиотеки\n# Например: ldconfig -p | grep libcustom.so\n",[29,2203,2204,2209,2214,2228,2232,2237,2242,2246,2251,2256,2260,2265,2278],{"__ignoreMap":103},[107,2205,2206],{"class":109,"line":110},[107,2207,2208],{"class":1264},"# Способ 1: Используйте ldd для конкретного исполняемого файла\n",[107,2210,2211],{"class":109,"line":337},[107,2212,2213],{"class":1264},"# Замените /usr/bin/ваша_программа на реальный путь\n",[107,2215,2216,2218,2221,2223,2225],{"class":109,"line":620},[107,2217,373],{"class":113},[107,2219,2220],{"class":146}," /usr/bin/ваша_программа",[107,2222,140],{"class":139},[107,2224,143],{"class":113},[107,2226,2227],{"class":146}," \"не найдена\"\n",[107,2229,2230],{"class":109,"line":1824},[107,2231,1821],{"emptyLinePlaceholder":689},[107,2233,2234],{"class":109,"line":1830},[107,2235,2236],{"class":1264},"# Если вывод пуст — все библиотеки найдены.\n",[107,2238,2239],{"class":109,"line":1836},[107,2240,2241],{"class":1264},"# Если есть строки с \"не найдена\", значит, путь не настроен.\n",[107,2243,2244],{"class":109,"line":2008},[107,2245,1821],{"emptyLinePlaceholder":689},[107,2247,2248],{"class":109,"line":2014},[107,2249,2250],{"class":1264},"# Способ 2: Запустите программу, которая ранее падала.\n",[107,2252,2253],{"class":109,"line":2019},[107,2254,2255],{"class":1264},"# Она должна теперь работать.\n",[107,2257,2258],{"class":109,"line":2025},[107,2259,1821],{"emptyLinePlaceholder":689},[107,2261,2262],{"class":109,"line":2033},[107,2263,2264],{"class":1264},"# Способ 3: Проверьте кэш ldconfig\n",[107,2266,2267,2269,2271,2273,2275],{"class":109,"line":2038},[107,2268,40],{"class":113},[107,2270,136],{"class":116},[107,2272,140],{"class":139},[107,2274,143],{"class":113},[107,2276,2277],{"class":146}," имя_библиотеки\n",[107,2279,2280],{"class":109,"line":2044},[107,2281,2282],{"class":1264},"# Например: ldconfig -p | grep libcustom.so\n",[1785,2284],{},[20,2286,398],{"id":397},[90,2288,2290,2291],{"id":2289},"проблема-permission-denied-при-использовании-sudo-ldconfig","Проблема: \"Permission denied\" при использовании ",[29,2292,467],{},[25,2294,2295,2298,2299,2301,2302,2304,2307,2308,756,2310,2312,2313,41],{},[34,2296,2297],{},"Причина:"," Вы пытаетесь записать в ",[29,2300,170],{}," без прав суперпользователя.",[1191,2303],{},[34,2305,2306],{},"Решение:"," Все операции с системными файлами (",[29,2309,170],{},[29,2311,893],{},") требуют ",[29,2314,68],{},[90,2316,2318],{"id":2317},"проблема-библиотека-по-прежнему-не-находится-после-настройки","Проблема: Библиотека по-прежнему не находится после настройки",[25,2320,2321,2324,2325,879,2328,457,2331,2333,2335,2336,457],{},[34,2322,2323],{},"Причина 1:"," Указан ",[34,2326,2327],{},"относительный путь",[29,2329,2330],{},"./lib",[1191,2332],{},[34,2334,2306],{}," Всегда используйте абсолютный путь (",[29,2337,2338],{},"/home/user/project/lib",[25,2340,2341,2344,2345,2347,2349,2350,2352],{},[34,2342,2343],{},"Причина 2:"," Файл библиотеки имеет неправильные права.",[1191,2346],{},[34,2348,2306],{}," Убедитесь, что у файла ",[29,2351,31],{}," есть права на чтение для всех:",[98,2354,2356],{"className":100,"code":2355,"language":102,"meta":103,"style":103},"ls -l /путь/к/библиотеке/libexample.so\n# Должно быть: -rwxr-xr-x или хотя бы -rw-r--r--\nsudo chmod 755 /путь/к/библиотеке/libexample.so\n",[29,2357,2358,2369,2374],{"__ignoreMap":103},[107,2359,2360,2363,2366],{"class":109,"line":110},[107,2361,2362],{"class":113},"ls",[107,2364,2365],{"class":116}," -l",[107,2367,2368],{"class":146}," /путь/к/библиотеке/libexample.so\n",[107,2370,2371],{"class":109,"line":337},[107,2372,2373],{"class":1264},"# Должно быть: -rwxr-xr-x или хотя бы -rw-r--r--\n",[107,2375,2376,2378,2381,2384],{"class":109,"line":620},[107,2377,68],{"class":113},[107,2379,2380],{"class":146}," chmod",[107,2382,2383],{"class":116}," 755",[107,2385,2368],{"class":146},[25,2387,2388,2391,2392,2394,2395,2397,2399,2400,2403,2404,2406],{},[34,2389,2390],{},"Причина 3:"," Вы добавили путь в ",[29,2393,474],{},", но переменная не экспортирована.",[1191,2396],{},[34,2398,2306],{}," Проверьте ",[29,2401,2402],{},"export | grep LD_LIBRARY_PATH",". Если вывод пуст, добавьте ",[29,2405,318],{}," в конфигурационный файл.",[25,2408,2409,2412,2413,2415,2416,2418,2419,2421,2423,2424,2426,2427,41],{},[34,2410,2411],{},"Причина 4:"," Путь добавлен в ",[29,2414,170],{},", но ",[29,2417,40],{}," не был выполнен.",[1191,2420],{},[34,2422,2306],{}," Всегда запускайте ",[29,2425,467],{}," после редактирования файлов в ",[29,2428,170],{},[90,2430,2432],{"id":2431},"проблема-конфликт-библиотек-программа-ломается-после-добавления-пути","Проблема: Конфликт библиотек (программа ломается после добавления пути)",[25,2434,2435,2437,2438,2440],{},[34,2436,2297],{}," В вашем каталоге есть библиотека с тем же именем, что и в системе, но другой версии.",[1191,2439],{},[34,2441,2306],{},[436,2443,2444,2450,2464],{},[56,2445,2446,2447,41],{},"Проверьте, какая библиотека загружается: ",[29,2448,2449],{},"ldd /путь/к/программе | grep конфликтующая_библиотека",[56,2451,2452,2453,2456,2457,354,2460,2463],{},"Если загружается ваша, а не системная — это проблема. Переименуйте вашу библиотеку или используйте ",[34,2454,2455],{},"изоляцию"," через ",[29,2458,2459],{},"patchelf",[29,2461,2462],{},"chrpath"," для изменения RPATH исполняемого файла.",[56,2465,2466,2467,2469],{},"Временное решение: удалите путь из ",[29,2468,474],{}," или переместите библиотеку в другой каталог.",[90,2471,2473],{"id":2472},"проблема-настройки-не-применяются-для-gui-приложений","Проблема: Настройки не применяются для GUI-приложений",[25,2475,2476,2478,2479,41,2481,2483,2485,2486,2489,2490,350,2492,354,2494,41],{},[34,2477,2297],{}," Графические оболочки (GNOME, KDE) не всегда читают ",[29,2480,353],{},[1191,2482],{},[34,2484,2306],{}," Для постоянных путей используйте метод 4 (системный через ",[29,2487,2488],{},"ld.so.conf.d","). Если нужно только для пользователя, добавьте ",[29,2491,349],{},[29,2493,357],{},[29,2495,2065],{},[98,2497,2499],{"className":100,"code":2498,"language":102,"meta":103,"style":103},"# Пример для ~/.profile\nif [ -z \"$LD_LIBRARY_PATH\" ]; then\n    export LD_LIBRARY_PATH=\"/home/user/myapp/lib\"\nelse\n    export LD_LIBRARY_PATH=\"/home/user/myapp/lib:$LD_LIBRARY_PATH\"\nfi\n",[29,2500,2501,2506,2531,2543,2548,2563],{"__ignoreMap":103},[107,2502,2503],{"class":109,"line":110},[107,2504,2505],{"class":1264},"# Пример для ~/.profile\n",[107,2507,2508,2511,2514,2517,2520,2522,2525,2528],{"class":109,"line":337},[107,2509,2510],{"class":139},"if",[107,2512,2513],{"class":321}," [ ",[107,2515,2516],{"class":139},"-z",[107,2518,2519],{"class":146}," \"",[107,2521,331],{"class":321},[107,2523,2524],{"class":146},"\"",[107,2526,2527],{"class":321}," ]; ",[107,2529,2530],{"class":139},"then\n",[107,2532,2533,2536,2538,2540],{"class":109,"line":620},[107,2534,2535],{"class":139},"    export",[107,2537,322],{"class":321},[107,2539,325],{"class":139},[107,2541,2542],{"class":146},"\"/home/user/myapp/lib\"\n",[107,2544,2545],{"class":109,"line":1824},[107,2546,2547],{"class":139},"else\n",[107,2549,2550,2552,2554,2556,2559,2561],{"class":109,"line":1830},[107,2551,2535],{"class":139},[107,2553,322],{"class":321},[107,2555,325],{"class":139},[107,2557,2558],{"class":146},"\"/home/user/myapp/lib:",[107,2560,331],{"class":321},[107,2562,334],{"class":146},[107,2564,2565],{"class":109,"line":1836},[107,2566,2567],{"class":139},"fi\n",[610,2569,2570],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":103,"searchDepth":337,"depth":337,"links":2572},[2573,2574,2575,2582],{"id":22,"depth":337,"text":23},{"id":47,"depth":337,"text":48},{"id":87,"depth":337,"text":88,"children":2576},[2577,2578,2579,2580,2581],{"id":1791,"depth":620,"text":1792},{"id":1884,"depth":620,"text":1885},{"id":1955,"depth":620,"text":1956},{"id":2070,"depth":620,"text":2071},{"id":2194,"depth":620,"text":2195},{"id":397,"depth":337,"text":398,"children":2583},[2584,2586,2587,2588],{"id":2289,"depth":620,"text":2585},"Проблема: \"Permission denied\" при использовании sudo ldconfig",{"id":2317,"depth":620,"text":2318},{"id":2431,"depth":620,"text":2432},{"id":2472,"depth":620,"text":2473},"2026-02-16 13:52:52","Полное руководство по управлению путями к shared-библиотекам в Linux. Научитесь настраивать LD_LIBRARY_PATH, редактировать ld.so.conf и диагностировать проблемы с загрузкой библиотек.","medium",[2593,2596,2599,2602],{"question":2594,"answer":2595},"Что такое LD_LIBRARY_PATH и зачем он нужен?","LD_LIBRARY_PATH — это переменная окружения, которая указывает динамическому загрузчику (ld.so) дополнительные каталоги для поиска shared-библиотек (.so файлов) во время выполнения программы.",{"question":2597,"answer":2598},"Как сделать изменения в LD_LIBRARY_PATH постоянными?","Добавьте `export LD_LIBRARY_PATH=/новый/путь:$LD_LIBRARY_PATH` в файл `~/.bashrc` (для текущего пользователя) или `/etc/environment` (для всех пользователей), затем перезайдите в систему или выполните `source ~/.bashrc`.",{"question":2600,"answer":2601},"Когда лучше использовать /etc/ld.so.conf вместо LD_LIBRARY_PATH?","Используйте `/etc/ld.so.conf` для системных библиотек, которые должны быть доступны всем пользователям и программам. После изменений в этом файле обязательно выполните `sudo ldconfig`.",{"question":2603,"answer":2604},"Почему после добавления пути в LD_LIBRARY_PATH библиотека всё равно не находится?","Проверьте: 1) абсолютный ли путь (не относительный), 2) есть ли у библиотеки права на чтение, 3) экспортирована ли переменная (`echo $LD_LIBRARY_PATH`), 4) не перезаписывается ли она другими скриптами.",[2606,2609,2612,2615,2618],{"name":2607,"text":2608},"Проверка текущих библиотечных путей","Выполните `echo $LD_LIBRARY_PATH` для переменной окружения и `ldconfig -v 2>/dev/null | grep -v '^\\s'` для системных путей, чтобы увидеть текущие настройки.",{"name":2610,"text":2611},"Временное добавление пути через LD_LIBRARY_PATH","Установите переменную для текущей сессии: `export LD_LIBRARY_PATH=/opt/mylibs:$LD_LIBRARY_PATH`. Изменения действуют только до завершения терминала.",{"name":2613,"text":2614},"Постоянное добавление пути для пользователя","Добавьте экспорт в `~/.bashrc` или `~/.profile`, затем выполните `source ~/.bashrc`. Путь будет загружаться при каждом запуске оболочки.",{"name":2616,"text":2617},"Добавление системного пути через ld.so.conf","Создайте файл `/etc/ld.so.conf.d/custom.conf` (от суперпользователя) и добавьте абсолютный путь, например `/usr/local/lib`. Затем выполните `sudo ldconfig` для обновления кэша.",{"name":2619,"text":2620},"Проверка работы настройки","Используйте `ldd /путь/к/исполняемому_файлу` чтобы увидеть, откуда загружаются библиотеки. Или запустите программу, которая ранее выдавала ошибку 'library not found'.",[2622,2623,2624,893,40,2625,2626,2627,2628,2629],"библиотечный путь linux","ld_library_path","как добавить путь к библиотекам","ошибка library not found","shared library path","настройка путей библиотек","linux library path","установка LD_LIBRARY_PATH",{},[690,2632],"/errors/linux/library-not-found",{"title":1703,"description":2590},"guides/linux/library-path","Этот гайд подробно объясняет, как управлять путями поиска динамических библиотек в Linux. Вы освоите три основных метода: переменную окружения LD_LIBRARY_PATH, конфигурационные файлы ld.so и утилиту ldconfig, а также научитесь проверять корректность настроек.",[691,701,2623,2637,2638,704,2639],"sysadmin","разработка","конфигурация","1Khxyt6pg8i2QYU19J1V5IsDMkI21_mo4GWuiRbVEik",{"id":2642,"title":2643,"appliesTo":2644,"author":11,"body":2645,"canonical":642,"code":2656,"createdAt":3328,"description":3329,"difficulty":2591,"draft":646,"estimatedTime":3330,"extension":648,"faq":3331,"howToSteps":3344,"howToTotalTime":3362,"image":642,"keywords":3363,"locale":687,"meta":3373,"navigation":689,"path":695,"platform":691,"related":3374,"section":3379,"seo":3380,"severity":3381,"stem":3382,"summary":3383,"tags":3384,"twitterCreator":642,"twitterSite":642,"type":2670,"updatedAt":3328,"__hash__":3388},"content_ru/errors/linux/error-ld.so-not-found.md","Ошибка ld.so в Linux: причины и способы решения",[7,8,9,10],{"type":13,"value":2646,"toc":3318},[2647,2651,2661,2715,2722,2726,2776,2780,2783,2788,2858,2863,2931,2941,2945,2954,2980,2987,3010,3020,3022,3026,3033,3072,3075,3091,3095,3098,3137,3143,3148,3159,3164,3168,3175,3207,3216,3220,3266,3269,3315],[20,2648,2650],{"id":2649},"что-означает-ошибка-ldso","Что означает ошибка ld.so",[25,2652,2653,2654,2657,2658,2660],{},"Ошибка ",[29,2655,2656],{},"ld.so"," (или ",[29,2659,1490],{},") возникает, когда динамический компоновщик Linux не может найти разделяемую библиотеку (shared library), необходимую для запуска программы. Полное сообщение обычно выглядит так:",[98,2662,2664],{"className":100,"code":2663,"language":102,"meta":103,"style":103},"error while loading shared libraries: libexample.so.1: cannot open shared object file: No such file or directory\n",[29,2665,2666],{"__ignoreMap":103},[107,2667,2668,2671,2674,2677,2680,2683,2686,2689,2692,2694,2697,2700,2703,2706,2709,2712],{"class":109,"line":110},[107,2669,2670],{"class":113},"error",[107,2672,2673],{"class":146}," while",[107,2675,2676],{"class":146}," loading",[107,2678,2679],{"class":146}," shared",[107,2681,2682],{"class":146}," libraries:",[107,2684,2685],{"class":146}," libexample.so.1:",[107,2687,2688],{"class":146}," cannot",[107,2690,2691],{"class":146}," open",[107,2693,2679],{"class":146},[107,2695,2696],{"class":146}," object",[107,2698,2699],{"class":146}," file:",[107,2701,2702],{"class":146}," No",[107,2704,2705],{"class":146}," such",[107,2707,2708],{"class":146}," file",[107,2710,2711],{"class":146}," or",[107,2713,2714],{"class":146}," directory\n",[25,2716,2717,2718,2721],{},"Это означает, что исполняемый файл требует библиотеку ",[29,2719,2720],{},"libexample.so.1",", но загрузчик не находит её в стандартных путях. Ошибка появляется сразу при попытке запуска команды в терминале и предотвращает выполнение программы.",[20,2723,2725],{"id":2724},"причины-возникновения","Причины возникновения",[436,2727,2728,2734,2745,2751,2757,2763],{},[56,2729,2730,2733],{},[34,2731,2732],{},"Не установлена необходимая библиотека"," — программа зависит от библиотеки, которая отсутствует в системе.",[56,2735,2736,2739,2740,2742,2743,41],{},[34,2737,2738],{},"Библиотека установлена в нестандартный путь"," — загрузчик ищет библиотеки только в каталогах, указанных в ",[29,2741,893],{}," и переменной ",[29,2744,474],{},[56,2746,2747,2750],{},[34,2748,2749],{},"Неправильные права доступа"," — у текущего пользователя нет прав на чтение файла библиотеки.",[56,2752,2753,2756],{},[34,2754,2755],{},"Повреждение библиотеки"," — файл библиотеки повреждён или имеет неверный формат.",[56,2758,2759,2762],{},[34,2760,2761],{},"Несоответствие архитектуры"," — например, 32-битная библиотека для 64-битной программы (или наоборот).",[56,2764,2765,2768,2769,2772,2773,457],{},[34,2766,2767],{},"Устаревшая версия библиотеки"," — программа требует конкретную версию (например, ",[29,2770,2771],{},"libssl.so.1.1","), а в системе установлена другая (например, ",[29,2774,2775],{},"libssl.so.3",[20,2777,2779],{"id":2778},"способ-1-установка-недостающей-библиотеки","Способ 1: Установка недостающей библиотеки",[25,2781,2782],{},"Самый частый случай — библиотека просто не установлена. Сначала определите, какой пакет предоставляет нужную библиотеку.",[25,2784,2785],{},[34,2786,2787],{},"Для Ubuntu/Debian:",[98,2789,2791],{"className":100,"code":2790,"language":102,"meta":103,"style":103},"# Поиск пакета, содержащего библиотеку (например, libssl.so.1.1)\napt-file search libssl.so.1.1\n# Если apt-file не установлен, сначала установите его:\nsudo apt update && sudo apt install apt-file && sudo apt-file update\n# Затем установите найденный пакет:\nsudo apt install libssl1.1\n",[29,2792,2793,2798,2807,2812,2842,2847],{"__ignoreMap":103},[107,2794,2795],{"class":109,"line":110},[107,2796,2797],{"class":1264},"# Поиск пакета, содержащего библиотеку (например, libssl.so.1.1)\n",[107,2799,2800,2802,2804],{"class":109,"line":337},[107,2801,1183],{"class":113},[107,2803,1186],{"class":146},[107,2805,2806],{"class":146}," libssl.so.1.1\n",[107,2808,2809],{"class":109,"line":620},[107,2810,2811],{"class":1264},"# Если apt-file не установлен, сначала установите его:\n",[107,2813,2814,2816,2818,2821,2824,2826,2828,2830,2833,2835,2837,2839],{"class":109,"line":1824},[107,2815,68],{"class":113},[107,2817,1255],{"class":146},[107,2819,2820],{"class":146}," update",[107,2822,2823],{"class":321}," && ",[107,2825,68],{"class":113},[107,2827,1255],{"class":146},[107,2829,1258],{"class":146},[107,2831,2832],{"class":146}," apt-file",[107,2834,2823],{"class":321},[107,2836,68],{"class":113},[107,2838,2832],{"class":146},[107,2840,2841],{"class":146}," update\n",[107,2843,2844],{"class":109,"line":1830},[107,2845,2846],{"class":1264},"# Затем установите найденный пакет:\n",[107,2848,2849,2851,2853,2855],{"class":109,"line":1836},[107,2850,68],{"class":113},[107,2852,1255],{"class":146},[107,2854,1258],{"class":146},[107,2856,2857],{"class":146}," libssl1.1\n",[25,2859,2860],{},[34,2861,2862],{},"Для CentOS/RHEL/Fedora:",[98,2864,2866],{"className":100,"code":2865,"language":102,"meta":103,"style":103},"# Поиск пакета\nyum provides */libssl.so.1.1\n# Или для Fedora с dnf:\ndnf provides */libssl.so.1.1\n# Установка пакета:\nsudo yum install openssl-libs\n# или\nsudo dnf install openssl-libs\n",[29,2867,2868,2873,2884,2889,2899,2904,2915,2920],{"__ignoreMap":103},[107,2869,2870],{"class":109,"line":110},[107,2871,2872],{"class":1264},"# Поиск пакета\n",[107,2874,2875,2877,2879,2881],{"class":109,"line":337},[107,2876,762],{"class":113},[107,2878,1214],{"class":146},[107,2880,1217],{"class":116},[107,2882,2883],{"class":146},"/libssl.so.1.1\n",[107,2885,2886],{"class":109,"line":620},[107,2887,2888],{"class":1264},"# Или для Fedora с dnf:\n",[107,2890,2891,2893,2895,2897],{"class":109,"line":1824},[107,2892,769],{"class":113},[107,2894,1214],{"class":146},[107,2896,1217],{"class":116},[107,2898,2883],{"class":146},[107,2900,2901],{"class":109,"line":1830},[107,2902,2903],{"class":1264},"# Установка пакета:\n",[107,2905,2906,2908,2910,2912],{"class":109,"line":1836},[107,2907,68],{"class":113},[107,2909,1272],{"class":146},[107,2911,1258],{"class":146},[107,2913,2914],{"class":146}," openssl-libs\n",[107,2916,2917],{"class":109,"line":2008},[107,2918,2919],{"class":1264},"# или\n",[107,2921,2922,2924,2927,2929],{"class":109,"line":2014},[107,2923,68],{"class":113},[107,2925,2926],{"class":146}," dnf",[107,2928,1258],{"class":146},[107,2930,2914],{"class":146},[206,2932,2933],{},[25,2934,1384,2935,2937,2938,2940],{},[34,2936,345],{}," Имя библиотеки в ошибке (например, ",[29,2939,2771],{},") может отличаться от имени пакета. Убедитесь, что устанавливаете пакет с соответствующей версией.",[20,2942,2944],{"id":2943},"способ-2-добавление-пути-к-библиотекам-в-ld_library_path","Способ 2: Добавление пути к библиотекам в LD_LIBRARY_PATH",[25,2946,2947,2948,2951,2952,41],{},"Если библиотека уже есть в системе, но находится в нестандартном каталоге (например, в ",[29,2949,2950],{},"/home/user/app/lib","), вы можете временно добавить этот путь в переменную окружения ",[29,2953,474],{},[98,2955,2957],{"className":100,"code":2956,"language":102,"meta":103,"style":103},"# Для текущей сессии терминала:\nexport LD_LIBRARY_PATH=/home/user/app/lib:$LD_LIBRARY_PATH\n# Затем попробуйте запустить программу снова.\n",[29,2958,2959,2964,2975],{"__ignoreMap":103},[107,2960,2961],{"class":109,"line":110},[107,2962,2963],{"class":1264},"# Для текущей сессии терминала:\n",[107,2965,2966,2968,2970,2972],{"class":109,"line":337},[107,2967,318],{"class":139},[107,2969,322],{"class":321},[107,2971,325],{"class":139},[107,2973,2974],{"class":321},"/home/user/app/lib:$LD_LIBRARY_PATH\n",[107,2976,2977],{"class":109,"line":620},[107,2978,2979],{"class":1264},"# Затем попробуйте запустить программу снова.\n",[25,2981,2982,2983,354,2985,124],{},"Чтобы сделать изменение постоянным, добавьте строку в ",[29,2984,353],{},[29,2986,357],{},[98,2988,2990],{"className":100,"code":2989,"language":102,"meta":103,"style":103},"echo 'export LD_LIBRARY_PATH=\"/home/user/app/lib:$LD_LIBRARY_PATH\"' >> ~/.bashrc\nsource ~/.bashrc\n",[29,2991,2992,3004],{"__ignoreMap":103},[107,2993,2994,2996,2999,3002],{"class":109,"line":110},[107,2995,180],{"class":116},[107,2997,2998],{"class":146}," 'export LD_LIBRARY_PATH=\"/home/user/app/lib:$LD_LIBRARY_PATH\"'",[107,3000,3001],{"class":139}," >>",[107,3003,1977],{"class":146},[107,3005,3006,3008],{"class":109,"line":337},[107,3007,2028],{"class":116},[107,3009,1977],{"class":146},[206,3011,3012],{},[25,3013,210,3014,3016,3017,3019],{},[34,3015,213],{}," Используйте этот способ только для пользовательских установок. Для системных библиотек лучше настроить ",[29,3018,40],{}," (см. Способ 3).",[480,3021],{},[20,3023,3025],{"id":3024},"способ-3-обновление-кэша-библиотек-ldconfig","Способ 3: Обновление кэша библиотек (ldconfig)",[25,3027,3028,3029,3032],{},"Если библиотека установлена в стандартный системный путь (например, ",[29,3030,3031],{},"/usr/local/lib","), но загрузчик её не видит, возможно, кэш устарел. Обновите его:",[98,3034,3036],{"className":100,"code":3035,"language":102,"meta":103,"style":103},"# Добавьте каталог в конфигурацию ld.so, если его там нет:\necho '/usr/local/lib' | sudo tee -a /etc/ld.so.conf.d/custom.conf\n# Обновите кэш:\nsudo ldconfig\n",[29,3037,3038,3043,3061,3066],{"__ignoreMap":103},[107,3039,3040],{"class":109,"line":110},[107,3041,3042],{"class":1264},"# Добавьте каталог в конфигурацию ld.so, если его там нет:\n",[107,3044,3045,3047,3050,3052,3054,3056,3059],{"class":109,"line":337},[107,3046,180],{"class":116},[107,3048,3049],{"class":146}," '/usr/local/lib'",[107,3051,140],{"class":139},[107,3053,188],{"class":113},[107,3055,191],{"class":146},[107,3057,3058],{"class":116}," -a",[107,3060,2098],{"class":146},[107,3062,3063],{"class":109,"line":620},[107,3064,3065],{"class":1264},"# Обновите кэш:\n",[107,3067,3068,3070],{"class":109,"line":1824},[107,3069,68],{"class":113},[107,3071,233],{"class":146},[25,3073,3074],{},"После этого загрузчик будет знать о новых библиотеках. Проверьте, видна ли библиотека:",[98,3076,3077],{"className":100,"code":279,"language":102,"meta":103,"style":103},[29,3078,3079],{"__ignoreMap":103},[107,3080,3081,3083,3085,3087,3089],{"class":109,"line":110},[107,3082,40],{"class":113},[107,3084,136],{"class":116},[107,3086,140],{"class":139},[107,3088,143],{"class":113},[107,3090,294],{"class":146},[20,3092,3094],{"id":3093},"способ-4-проверка-архитектуры-и-зависимостей","Способ 4: Проверка архитектуры и зависимостей",[25,3096,3097],{},"Убедитесь, что архитектура библиотеки соответствует программе.",[98,3099,3101],{"className":100,"code":3100,"language":102,"meta":103,"style":103},"# Проверка архитектуры библиотеки:\nfile /usr/lib/x86_64-linux-gnu/libexample.so.1\n# Пример вывода: libexample.so.1: ELF 64-bit LSB shared object, x86-64, ...\n\n# Проверка архитектуры исполняемого файла:\nfile /usr/bin/example-program\n",[29,3102,3103,3108,3116,3121,3125,3130],{"__ignoreMap":103},[107,3104,3105],{"class":109,"line":110},[107,3106,3107],{"class":1264},"# Проверка архитектуры библиотеки:\n",[107,3109,3110,3113],{"class":109,"line":337},[107,3111,3112],{"class":113},"file",[107,3114,3115],{"class":146}," /usr/lib/x86_64-linux-gnu/libexample.so.1\n",[107,3117,3118],{"class":109,"line":620},[107,3119,3120],{"class":1264},"# Пример вывода: libexample.so.1: ELF 64-bit LSB shared object, x86-64, ...\n",[107,3122,3123],{"class":109,"line":1824},[107,3124,1821],{"emptyLinePlaceholder":689},[107,3126,3127],{"class":109,"line":1830},[107,3128,3129],{"class":1264},"# Проверка архитектуры исполняемого файла:\n",[107,3131,3132,3134],{"class":109,"line":1836},[107,3133,3112],{"class":113},[107,3135,3136],{"class":146}," /usr/bin/example-program\n",[25,3138,3139,3140,41],{},"Если программа 64-битная, а библиотека 32-битная (или наоборот), нужно установить библиотеку правильной архитектуры. Например, в Ubuntu для 32-битных библиотек есть пакеты с суффиксом ",[29,3141,3142],{},":i386",[25,3144,3145,3146,124],{},"Также проверьте все зависимости программы с помощью ",[29,3147,373],{},[98,3149,3151],{"className":100,"code":3150,"language":102,"meta":103,"style":103},"ldd /usr/bin/example-program\n",[29,3152,3153],{"__ignoreMap":103},[107,3154,3155,3157],{"class":109,"line":110},[107,3156,373],{"class":113},[107,3158,3136],{"class":146},[25,3160,3161,3162,457],{},"Эта команда покажет, какие библиотеки загружаются и какие из них не найдены (отметка ",[29,3163,1146],{},[20,3165,3167],{"id":3166},"способ-5-переустановка-приложения","Способ 5: Переустановка приложения",[25,3169,3170,3171,3174],{},"Если библиотека поставляется вместе с приложением (например, в папке ",[29,3172,3173],{},"app/lib","), возможно, файлы повреждены или неполные. Переустановите приложение:",[98,3176,3178],{"className":100,"code":3177,"language":102,"meta":103,"style":103},"# Для приложения, установленного из репозитория:\nsudo apt reinstall example-package\n# Для приложения, скачанного вручную:\n# Удалите папку приложения и загрузите заново.\n",[29,3179,3180,3185,3197,3202],{"__ignoreMap":103},[107,3181,3182],{"class":109,"line":110},[107,3183,3184],{"class":1264},"# Для приложения, установленного из репозитория:\n",[107,3186,3187,3189,3191,3194],{"class":109,"line":337},[107,3188,68],{"class":113},[107,3190,1255],{"class":146},[107,3192,3193],{"class":146}," reinstall",[107,3195,3196],{"class":146}," example-package\n",[107,3198,3199],{"class":109,"line":620},[107,3200,3201],{"class":1264},"# Для приложения, скачанного вручную:\n",[107,3203,3204],{"class":109,"line":1824},[107,3205,3206],{"class":1264},"# Удалите папку приложения и загрузите заново.\n",[25,3208,3209,3210,3212,3213,41],{},"Если приложение использует локальные библиотеки, убедитесь, что скрипт запуска правильно задаёт ",[29,3211,474],{}," или использует ",[29,3214,3215],{},"rpath",[20,3217,3219],{"id":3218},"профилактика","Профилактика",[53,3221,3222,3228,3244,3250,3260],{},[56,3223,3224,3227],{},[34,3225,3226],{},"Устанавливайте библиотеки из официальных репозиториев"," — это гарантирует совместимость и автоматическое обновление.",[56,3229,3230,3233,3234,3237,3238,3240,3241,41],{},[34,3231,3232],{},"При компиляции программ из исходников"," используйте ",[29,3235,3236],{},"--prefix=/usr/local"," и выполняйте ",[29,3239,467],{}," после ",[29,3242,3243],{},"make install",[56,3245,3246,3249],{},[34,3247,3248],{},"Избегайте ручного копирования библиотек"," в системные пути без обновления кэша.",[56,3251,3252,3255,3256,3259],{},[34,3253,3254],{},"Регулярно обновляйте систему"," — ",[29,3257,3258],{},"sudo apt update && sudo apt upgrade"," (или аналоги для вашего дистрибутива).",[56,3261,3262,3265],{},[34,3263,3264],{},"Используйте контейнеры"," (Docker) для изоляции зависимостей, если нужно избежать конфликтов библиотек.",[25,3267,3268],{},"Если проблема возникает у нескольких программ одновременно, возможно, повреждены системные библиотеки. В таком случае рассмотрите восстановление пакетов:",[98,3270,3272],{"className":100,"code":3271,"language":102,"meta":103,"style":103},"# Ubuntu/Debian:\nsudo apt install --reinstall libc6 libstdc++6\n# CentOS/RHEL:\nsudo yum reinstall glibc libstdc++\n",[29,3273,3274,3279,3296,3301],{"__ignoreMap":103},[107,3275,3276],{"class":109,"line":110},[107,3277,3278],{"class":1264},"# Ubuntu/Debian:\n",[107,3280,3281,3283,3285,3287,3290,3293],{"class":109,"line":337},[107,3282,68],{"class":113},[107,3284,1255],{"class":146},[107,3286,1258],{"class":146},[107,3288,3289],{"class":116}," --reinstall",[107,3291,3292],{"class":146}," libc6",[107,3294,3295],{"class":146}," libstdc++6\n",[107,3297,3298],{"class":109,"line":620},[107,3299,3300],{"class":1264},"# CentOS/RHEL:\n",[107,3302,3303,3305,3307,3309,3312],{"class":109,"line":1824},[107,3304,68],{"class":113},[107,3306,1272],{"class":146},[107,3308,3193],{"class":146},[107,3310,3311],{"class":146}," glibc",[107,3313,3314],{"class":146}," libstdc++\n",[610,3316,3317],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":103,"searchDepth":337,"depth":337,"links":3319},[3320,3321,3322,3323,3324,3325,3326,3327],{"id":2649,"depth":337,"text":2650},{"id":2724,"depth":337,"text":2725},{"id":2778,"depth":337,"text":2779},{"id":2943,"depth":337,"text":2944},{"id":3024,"depth":337,"text":3025},{"id":3093,"depth":337,"text":3094},{"id":3166,"depth":337,"text":3167},{"id":3218,"depth":337,"text":3219},"2026-02-16 13:37:57","Пошаговая инструкция по исправлению ошибки 'error while loading shared libraries' в Linux. Узнайте, как установить недостающие библиотеки и настроить LD_LIBRARY_PATH. Решение за 5 минут!","15-30 мин",[3332,3335,3338,3341],{"answer":3333,"question":3334},"ld.so (динамический компоновщик) — это программа, которая загружает разделяемые библиотеки в память при запуске исполняемого файла. Он ищет библиотеки в заданных путях.","Что такое ld.so и зачем он нужен?",{"answer":3336,"question":3337},"Текст ошибки явно указывает имя библиотеки, например: 'libssl.so.1.1: cannot open shared object file'. Это и есть отсутствующий файл.","Как определить, какой именно файл библиотеки отсутствует?",{"answer":3339,"question":3340},"Да, если библиотека есть где-то в системе, вы можете добавить её путь в переменную окружения LD_LIBRARY_PATH. Но это решение только для текущей сессии.","Можно ли временно обойти ошибку, не устанавливая библиотеку?",{"answer":3342,"question":3343},"Возможно, вы установили библиотеку в нестандартный путь. Обновите кэш загрузчика командой `sudo ldconfig` или добавьте путь в /etc/ld.so.conf.","Почему после установки библиотеки ошибка остаётся?",[3345,3348,3351,3353,3356,3359],{"name":3346,"text":3347},"Определите отсутствующую библиотеку","Внимательно прочитайте сообщение об ошибке. Оно содержит имя библиотеки, которую не удалось загрузить.",{"name":3349,"text":3350},"Установите недостающую библиотеку","Используйте менеджер пакетов вашего дистрибутива (apt, yum, dnf) для установки пакета, содержащего эту библиотеку.",{"name":1284,"text":3352},"Если библиотека установлена в стандартный путь, выполните `sudo ldconfig` для обновления кэша загрузчика.",{"name":3354,"text":3355},"Настройте LD_LIBRARY_PATH при необходимости","Если библиотека находится в нестандартном каталоге, добавьте его в переменную окружения LD_LIBRARY_PATH.",{"name":3357,"text":3358},"Проверьте архитектуру библиотеки","Убедитесь, что разрядность библиотеки (32/64 бит) соответствует программе. Используйте команду `file`.",{"name":3360,"text":3361},"Переустановите приложение","Если библиотека поставляется с приложением, возможно, она повреждена. Переустановите приложение.","PT20M",[3364,3365,1746,3366,3367,3368,3369,3370,3371,3372],"ошибка ld.so","cannot open shared object file","ld.so not found","shared library not found","Linux библиотеки не найдены","как исправить ld.so","dynamic linker error","lib не загружается","загрузчик Linux ошибка",{},[3375,3376,3377,3378],"/errors/linux/error-permission-denied","/errors/linux/error-command-not-found","/guides/linux/how-to-set-ld-library-path","/guides/linux/how-to-install-libraries","Ошибки Linux",{"title":2643,"description":3329},"high","errors/linux/error-ld.so-not-found","Статья объясняет, что означает ошибка ld.so в Linux, и предоставляет несколько способов её исправить: установка библиотек, настройка переменных окружения и обновление кэша.",[691,3385,701,2656,704,3386,3387],"ошибка","linker","загрузчик","7RzBVyDhhlkD06nsqtPeCi1RrKESixEh_DRY5D1k180"]