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