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