[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/compiling-c-programs":3,"mdc--4m948m-key":678,"mdc-6gq8w3-key":688,"mdc--xo03p3-key":696,"mdc--f3zmb3-key":704,"mdc--wgo01r-key":712,"mdc-rpo9b-key":744,"mdc--qne5a5-key":767,"mdc--280qsm-key":800,"mdc-txayn3-key":817,"related-/guides/linux/installing-gcc,/guides/linux/using-make,/guides/linux/debugging-c":825,"mdc-s2quj2-key":826},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":613,"code":613,"createdAt":614,"description":615,"difficulty":616,"draft":617,"estimatedTime":618,"extension":619,"faq":620,"howToSteps":633,"howToTotalTime":652,"image":613,"keywords":653,"locale":660,"meta":661,"navigation":127,"path":662,"platform":663,"related":664,"section":668,"seo":669,"severity":613,"stem":670,"summary":671,"tags":672,"twitterCreator":613,"twitterSite":613,"type":676,"updatedAt":614,"__hash__":677},"content_ru/guides/linux/compiling-c-programs.md","Сборка C-программ на Linux: пошаговое руководство за 5 минут",[7,8,9,10],"Ubuntu 22.04 LTS","Debian 12 (bookworm)","Fedora 38","Arch Linux","FixPedia Team",{"type":13,"value":14,"toc":599},"minimark",[15,20,33,37,65,69,74,77,174,177,189,193,200,212,215,251,264,268,271,297,317,324,328,331,340,343,351,355,362,402,405,414,417,429,433,526,529,533,546,550,592,595],[16,17,19],"h2",{"id":18},"введение","Введение",[21,22,23,24,28,29,32],"p",{},"Сборка C-программ на Linux — это базовый навык для каждого разработчика. Даже если вы никогда раньше не компилировали код, с помощью этой инструкции вы сможете написать простую программу, скомпилировать её с помощью ",[25,26,27],"code",{},"gcc"," и выполнить. Гайд охватывает установку компилятора, ручную компиляцию и автоматизацию с помощью ",[25,30,31],{},"make",", а также решение типичных ошибок.",[16,34,36],{"id":35},"требования","Требования",[38,39,40,44,51,62],"ul",{},[41,42,43],"li",{},"Любая современная дистрибутива Linux (Ubuntu, Debian, Fedora, Arch и др.).",[41,45,46,47,50],{},"Права суперпользователя (",[25,48,49],{},"sudo",") для установки пакетов.",[41,52,53,54,57,58,61],{},"Текстовый редактор (например, ",[25,55,56],{},"nano",", ",[25,59,60],{},"vim",").",[41,63,64],{},"Базовые знания работы в терминале.",[16,66,68],{"id":67},"пошаговая-инструкция","Пошаговая инструкция",[70,71,73],"h3",{"id":72},"шаг-1-установка-компилятора-gcc","Шаг 1: Установка компилятора GCC",[21,75,76],{},"Выполните команду установки, соответствующую вашей системе:",[78,79,84],"pre",{"className":80,"code":81,"language":82,"meta":83,"style":83},"language-bash shiki shiki-themes github-light github-dark","# Debian/Ubuntu\nsudo apt update && sudo apt install build-essential\n\n# Fedora\nsudo dnf install gcc\n\n# Arch Linux\nsudo pacman -S base-devel\n","bash","",[25,85,86,95,122,129,135,148,153,159],{"__ignoreMap":83},[87,88,91],"span",{"class":89,"line":90},"line",1,[87,92,94],{"class":93},"sJ8bj","# Debian/Ubuntu\n",[87,96,98,101,105,108,112,114,116,119],{"class":89,"line":97},2,[87,99,49],{"class":100},"sScJk",[87,102,104],{"class":103},"sZZnC"," apt",[87,106,107],{"class":103}," update",[87,109,111],{"class":110},"sVt8B"," && ",[87,113,49],{"class":100},[87,115,104],{"class":103},[87,117,118],{"class":103}," install",[87,120,121],{"class":103}," build-essential\n",[87,123,125],{"class":89,"line":124},3,[87,126,128],{"emptyLinePlaceholder":127},true,"\n",[87,130,132],{"class":89,"line":131},4,[87,133,134],{"class":93},"# Fedora\n",[87,136,138,140,143,145],{"class":89,"line":137},5,[87,139,49],{"class":100},[87,141,142],{"class":103}," dnf",[87,144,118],{"class":103},[87,146,147],{"class":103}," gcc\n",[87,149,151],{"class":89,"line":150},6,[87,152,128],{"emptyLinePlaceholder":127},[87,154,156],{"class":89,"line":155},7,[87,157,158],{"class":93},"# Arch Linux\n",[87,160,162,164,167,171],{"class":89,"line":161},8,[87,163,49],{"class":100},[87,165,166],{"class":103}," pacman",[87,168,170],{"class":169},"sj4cs"," -S",[87,172,173],{"class":103}," base-devel\n",[21,175,176],{},"После завершения установки проверьте версию компилятора:",[78,178,180],{"className":80,"code":179,"language":82,"meta":83,"style":83},"gcc --version\n",[25,181,182],{"__ignoreMap":83},[87,183,184,186],{"class":89,"line":90},[87,185,27],{"class":100},[87,187,188],{"class":169}," --version\n",[70,190,192],{"id":191},"шаг-2-написание-простой-c-программы","Шаг 2: Написание простой C-программы",[21,194,195,196,199],{},"Создайте файл ",[25,197,198],{},"main.c"," с помощью текстового редакатора:",[78,201,203],{"className":80,"code":202,"language":82,"meta":83,"style":83},"nano main.c\n",[25,204,205],{"__ignoreMap":83},[87,206,207,209],{"class":89,"line":90},[87,208,56],{"class":100},[87,210,211],{"class":103}," main.c\n",[21,213,214],{},"Добавьте минимальный код, например, программу, выводящую «Hello, World!»:",[78,216,220],{"className":217,"code":218,"language":219,"meta":83,"style":83},"language-c shiki shiki-themes github-light github-dark","#include \u003Cstdio.h>\n\nint main() {\n    printf(\"Hello, World!n\");\n    return 0;\n}\n","c",[25,221,222,227,231,236,241,246],{"__ignoreMap":83},[87,223,224],{"class":89,"line":90},[87,225,226],{},"#include \u003Cstdio.h>\n",[87,228,229],{"class":89,"line":97},[87,230,128],{"emptyLinePlaceholder":127},[87,232,233],{"class":89,"line":124},[87,234,235],{},"int main() {\n",[87,237,238],{"class":89,"line":131},[87,239,240],{},"    printf(\"Hello, World!n\");\n",[87,242,243],{"class":89,"line":137},[87,244,245],{},"    return 0;\n",[87,247,248],{"class":89,"line":150},[87,249,250],{},"}\n",[21,252,253,254,57,257,260,261,61],{},"Сохраните файл (",[25,255,256],{},"Ctrl+O",[25,258,259],{},"Enter",") и выйдите (",[25,262,263],{},"Ctrl+X",[70,265,267],{"id":266},"шаг-3-компиляция-программы-с-помощью-gcc","Шаг 3: Компиляция программы с помощью gcc",[21,269,270],{},"В той же директории выполните команду:",[78,272,274],{"className":80,"code":273,"language":82,"meta":83,"style":83},"gcc -Wall -Wextra -O2 -o hello main.c\n",[25,275,276],{"__ignoreMap":83},[87,277,278,280,283,286,289,292,295],{"class":89,"line":90},[87,279,27],{"class":100},[87,281,282],{"class":169}," -Wall",[87,284,285],{"class":169}," -Wextra",[87,287,288],{"class":169}," -O2",[87,290,291],{"class":169}," -o",[87,293,294],{"class":103}," hello",[87,296,211],{"class":103},[38,298,299,305,311],{},[41,300,301,304],{},[25,302,303],{},"-Wall -Wextra"," — включают все предупреждения;",[41,306,307,310],{},[25,308,309],{},"-O2"," — уровень оптимизации;",[41,312,313,316],{},[25,314,315],{},"-o hello"," — задает имя исполняемого файла.",[21,318,319,320,323],{},"Если ошибок нет, появится файл ",[25,321,322],{},"hello",".",[70,325,327],{"id":326},"шаг-4-запуск-программы","Шаг 4: Запуск программы",[21,329,330],{},"Выполните программу:",[78,332,334],{"className":80,"code":333,"language":82,"meta":83,"style":83},"./hello\n",[25,335,336],{"__ignoreMap":83},[87,337,338],{"class":89,"line":90},[87,339,333],{"class":100},[21,341,342],{},"Вы должны увидеть:",[78,344,349],{"className":345,"code":347,"language":348},[346],"language-text","Hello, World!\n","text",[25,350,347],{"__ignoreMap":83},[70,352,354],{"id":353},"шаг-5-использование-makefile-для-автоматизации-сборки","Шаг 5: Использование Makefile для автоматизации сборки",[21,356,357,358,361],{},"Makefile позволяет автоматизировать сборку, особенно для проектов с несколькими исходными файлами. Создайте файл ",[25,359,360],{},"Makefile",":",[78,363,367],{"className":364,"code":365,"language":366,"meta":83,"style":83},"language-makefile shiki shiki-themes github-light github-dark","all: hello\n\nhello: main.c\n    gcc -Wall -Wextra -O2 -o hello main.c\n\nclean:\n    rm -f hello\n","makefile",[25,368,369,374,378,383,388,392,397],{"__ignoreMap":83},[87,370,371],{"class":89,"line":90},[87,372,373],{},"all: hello\n",[87,375,376],{"class":89,"line":97},[87,377,128],{"emptyLinePlaceholder":127},[87,379,380],{"class":89,"line":124},[87,381,382],{},"hello: main.c\n",[87,384,385],{"class":89,"line":131},[87,386,387],{},"    gcc -Wall -Wextra -O2 -o hello main.c\n",[87,389,390],{"class":89,"line":137},[87,391,128],{"emptyLinePlaceholder":127},[87,393,394],{"class":89,"line":150},[87,395,396],{},"clean:\n",[87,398,399],{"class":89,"line":155},[87,400,401],{},"    rm -f hello\n",[21,403,404],{},"Выполните команду:",[78,406,408],{"className":80,"code":407,"language":82,"meta":83,"style":83},"make\n",[25,409,410],{"__ignoreMap":83},[87,411,412],{"class":89,"line":90},[87,413,407],{"class":100},[21,415,416],{},"Чтобы удалить скомпилированный файл, выполните:",[78,418,420],{"className":80,"code":419,"language":82,"meta":83,"style":83},"make clean\n",[25,421,422],{"__ignoreMap":83},[87,423,424,426],{"class":89,"line":90},[87,425,31],{"class":100},[87,427,428],{"class":103}," clean\n",[70,430,432],{"id":431},"шаг-6-устранение-распространённых-ошибок","Шаг 6: Устранение распространённых ошибок",[434,435,436,452],"table",{},[437,438,439],"thead",{},[440,441,442,446,449],"tr",{},[443,444,445],"th",{},"Симптом",[443,447,448],{},"Вероятная причина",[443,450,451],{},"Решение",[453,454,455,476,492,509],"tbody",{},[440,456,457,463,466],{},[458,459,460],"td",{},[25,461,462],{},"gcc: command not found",[458,464,465],{},"Компилятор не установлен",[458,467,468,469,472,473,475],{},"Установите ",[25,470,471],{},"build-essential"," (Debian/Ubuntu) или ",[25,474,27],{}," (Fedora)",[440,477,478,483,486],{},[458,479,480],{},[25,481,482],{},"undefined reference to 'printf'",[458,484,485],{},"Не подключена стандартная библиотека или пропущен файл с кодом",[458,487,488,489,491],{},"Убедитесь, что ",[25,490,198],{}," подключен к Makefile и что файл существует",[440,493,494,499,502],{},[458,495,496],{},[25,497,498],{},"error: ‘FILE’ was not declared",[458,500,501],{},"Не подключен заголовочный файл",[458,503,504,505,508],{},"Добавьте ",[25,506,507],{},"#include \u003Cstdio.h>"," или нужный заголовок",[440,510,511,516,519],{},[458,512,513],{},[25,514,515],{},"segmentation fault",[458,517,518],{},"Ошибка доступа к памяти",[458,520,521,522,525],{},"Проверьте указатели, убедитесь, что массивы не выходят за границы, используйте ",[25,523,524],{},"-fsanitize=address"," для отладки",[527,528],"in-article-ad",{},[16,530,532],{"id":531},"проверка-результата","Проверка результата",[21,534,535,536,538,539,541,542,545],{},"Программа должна компилироваться без ошибок и успешно выполняться. Если вы использовали ",[25,537,31],{},", проверьте, что команда ",[25,540,31],{}," пересобирает программу при изменении исходного кода. Удалите скомпилированный файл с помощью ",[25,543,544],{},"make clean",", чтобы убедиться, что правило работает.",[16,547,549],{"id":548},"возможные-проблемы","Возможные проблемы",[551,552,553,565,579],"ol",{},[41,554,555,561,562,564],{},[556,557,558,559],"strong",{},"Отсутствие ",[25,560,31],{},"\nУстановите ",[25,563,31],{}," через тот же менеджер пакетов, который использовался для установки GCC.",[41,566,567,570,571,574,575,578],{},[556,568,569],{},"Конфликт версий GCC","\nНекоторые дистрибутивы поставляются с несколькими версиями. Используйте ",[25,572,573],{},"gcc-11"," или ",[25,576,577],{},"g++"," явно, если нужна конкретная версия.",[41,580,581,584,585,588,589,591],{},[556,582,583],{},"Отсутствие прав на запись","\nЕсли вы компилируете в домашней директории без прав на запись, выберите другую директорию (",[25,586,587],{},"/tmp",") или используйте ",[25,590,49],{}," с осторожностью.",[21,593,594],{},"Эти советы помогут избежать типичных ошибок и обеспечат плавный процесс сборки. Удачной разработки!",[596,597,598],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":83,"searchDepth":97,"depth":97,"links":600},[601,602,603,611,612],{"id":18,"depth":97,"text":19},{"id":35,"depth":97,"text":36},{"id":67,"depth":97,"text":68,"children":604},[605,606,607,608,609,610],{"id":72,"depth":124,"text":73},{"id":191,"depth":124,"text":192},{"id":266,"depth":124,"text":267},{"id":326,"depth":124,"text":327},{"id":353,"depth":124,"text":354},{"id":431,"depth":124,"text":432},{"id":531,"depth":97,"text":532},{"id":548,"depth":97,"text":549},null,"2026-07-02 14:21:01","Узнайте, как быстро собрать C-программу на Linux. Пошаговая инструкция с примерами и проверенными командами для начинающих.","easy",false,"5-10 мин","md",[621,624,627,630],{"question":622,"answer":623},"Что делать, если команда gcc не найдена?","Установите компилятор с помощью менеджера пакетов: sudo apt install build-essential (Debian/Ubuntu) или sudo dnf install gcc (Fedora).",{"question":625,"answer":626},"Как написать и скомпилировать простую C-программу?","Создайте файл example.c с кодом, затем выполните команду gcc -o program example.c и запустите ./program.",{"question":628,"answer":629},"Почему сборка через make может не работать?","Убедитесь, что файл Makefile содержит правильные правила и зависимости, а также что все необходимые исходные файлы присутствуют.",{"question":631,"answer":632},"Как устранить ошибки компиляции, такие как 'undefined reference'?","Добавьте недостающие исходные файлы в Makefile или свяжите необходимые библиотеки, например, с помощью -lm или -lpthread.",[634,637,640,643,646,649],{"name":635,"text":636},"Установка компилятора GCC","Откройте терминал и выполните команду установки, соответствующую вашей системе. Например, для Debian/Ubuntu: `sudo apt update && sudo apt install build-essential`. Для Fedora: `sudo dnf install gcc`. Для Arch Linux: `sudo pacman -S base-devel`.",{"name":638,"text":639},"Написание простой C-программы","Создайте файл `main.c`, например, с помощью редактора nano: `nano main.c`. Введите код, сохраните (Ctrl+O, Enter, Ctrl+X).",{"name":641,"text":642},"Компиляция программы с помощью gcc","В той же директории выполните команду: `gcc -Wall -Wextra -O2 -o hello main.c`. Флаг `-Wall` включает все предупреждения, `-o` задает имя выходного файла.",{"name":644,"text":645},"Запуск программы","Выполните созданный исполняемый файл: `./hello`. Проверьте вывод на экране.",{"name":647,"text":648},"Использование Makefile для автоматизации сборки","Создайте файл `Makefile` с правилами, например:\n\n```makefile\ntarget: main.c\n\tgcc -o program main.c\n```\nВыполните команду `make`, чтобы собрать программу.",{"name":650,"text":651},"Устранение распространённых ошибок","Если получаете ошибки, проверьте орфографию переменных, убедитесь, что все библиотеки подключены, а также что исходные файлы не повреждены.","PT10M",[654,655,656,657,658,659],"как собрать C-программу на Linux","установка gcc на Linux","компиляция C кода через gcc","как использовать make для сборки C","устранение ошибок при компиляции C","простой пример C программы","ru_RU",{},"/guides/linux/compiling-c-programs","linux",[665,666,667],"/guides/linux/installing-gcc","/guides/linux/using-make","/guides/linux/debugging-c","Гайды Linux",{"title":5,"description":615},"guides/linux/compiling-c-programs","В этом руководстве вы научитесь устанавливать компилятор GCC, писать простую C-программу, компилировать её с помощью gcc и выполнять. Рассказывается об использовании make и устранении типичных ошибок.",[673,674,675,360],"C","GCC","Linux","guide","mBQXnkZvdmW7kAZSlxlKdvO0LBQ8xvO_k5i8F0yDreo",{"data":679,"body":680},{},{"type":681,"children":682},"root",[683],{"type":684,"tag":21,"props":685,"children":686},"element",{},[687],{"type":348,"value":623},{"data":689,"body":690},{},{"type":681,"children":691},[692],{"type":684,"tag":21,"props":693,"children":694},{},[695],{"type":348,"value":626},{"data":697,"body":698},{},{"type":681,"children":699},[700],{"type":684,"tag":21,"props":701,"children":702},{},[703],{"type":348,"value":629},{"data":705,"body":706},{},{"type":681,"children":707},[708],{"type":684,"tag":21,"props":709,"children":710},{},[711],{"type":348,"value":632},{"data":713,"body":714},{},{"type":681,"children":715},[716],{"type":684,"tag":21,"props":717,"children":718},{},[719,721,727,729,735,737,743],{"type":348,"value":720},"Откройте терминал и выполните команду установки, соответствующую вашей системе. Например, для Debian/Ubuntu: ",{"type":684,"tag":25,"props":722,"children":724},{"className":723},[],[725],{"type":348,"value":726},"sudo apt update && sudo apt install build-essential",{"type":348,"value":728},". Для Fedora: ",{"type":684,"tag":25,"props":730,"children":732},{"className":731},[],[733],{"type":348,"value":734},"sudo dnf install gcc",{"type":348,"value":736},". Для Arch Linux: ",{"type":684,"tag":25,"props":738,"children":740},{"className":739},[],[741],{"type":348,"value":742},"sudo pacman -S base-devel",{"type":348,"value":323},{"data":745,"body":746},{},{"type":681,"children":747},[748],{"type":684,"tag":21,"props":749,"children":750},{},[751,752,757,759,765],{"type":348,"value":195},{"type":684,"tag":25,"props":753,"children":755},{"className":754},[],[756],{"type":348,"value":198},{"type":348,"value":758},", например, с помощью редактора nano: ",{"type":684,"tag":25,"props":760,"children":762},{"className":761},[],[763],{"type":348,"value":764},"nano main.c",{"type":348,"value":766},". Введите код, сохраните (Ctrl+O, Enter, Ctrl+X).",{"data":768,"body":769},{},{"type":681,"children":770},[771],{"type":684,"tag":21,"props":772,"children":773},{},[774,776,782,784,790,792,798],{"type":348,"value":775},"В той же директории выполните команду: ",{"type":684,"tag":25,"props":777,"children":779},{"className":778},[],[780],{"type":348,"value":781},"gcc -Wall -Wextra -O2 -o hello main.c",{"type":348,"value":783},". Флаг ",{"type":684,"tag":25,"props":785,"children":787},{"className":786},[],[788],{"type":348,"value":789},"-Wall",{"type":348,"value":791}," включает все предупреждения, ",{"type":684,"tag":25,"props":793,"children":795},{"className":794},[],[796],{"type":348,"value":797},"-o",{"type":348,"value":799}," задает имя выходного файла.",{"data":801,"body":802},{},{"type":681,"children":803},[804],{"type":684,"tag":21,"props":805,"children":806},{},[807,809,815],{"type":348,"value":808},"Выполните созданный исполняемый файл: ",{"type":684,"tag":25,"props":810,"children":812},{"className":811},[],[813],{"type":348,"value":814},"./hello",{"type":348,"value":816},". Проверьте вывод на экране.",{"data":818,"body":819},{},{"type":681,"children":820},[821],{"type":684,"tag":21,"props":822,"children":823},{},[824],{"type":348,"value":651},[],{"data":827,"body":828},{},{"type":681,"children":829},[830,841,851,863],{"type":684,"tag":21,"props":831,"children":832},{},[833,834,839],{"type":348,"value":195},{"type":684,"tag":25,"props":835,"children":837},{"className":836},[],[838],{"type":348,"value":360},{"type":348,"value":840}," с правилами, например:",{"type":684,"tag":78,"props":842,"children":846},{"className":843,"code":844,"language":366,"meta":83,"style":845},"language-makefile","target: main.c\n    gcc -o program main.c\n","undefined",[847],{"type":684,"tag":25,"props":848,"children":849},{"__ignoreMap":83},[850],{"type":348,"value":844},{"type":684,"tag":21,"props":852,"children":853},{},[854,856,861],{"type":348,"value":855},"Выполните команду ",{"type":684,"tag":25,"props":857,"children":859},{"className":858},[],[860],{"type":348,"value":31},{"type":348,"value":862},", чтобы собрать программу.",{"type":684,"tag":596,"props":864,"children":865},{},[866],{"type":348,"value":83}]