Компиляция С кода через коммандную строку Linux

solomon

Рядовой
Сообщения
4
Реакции
1
Кто знает когда пригодиться вам эта инфомация, возможно вам потребуется скомпилировать эксполит на таргете а под рукой только ssh соединение. Возможно вам потребуется скомпилировать код в termux. А возможно вы просто хотите похвастаться перед друзьями новым умением.
Как бы то ни было, вы сами зашли в этот тред и начали читать эту статью, поэтому я пожалуй перейду к содержанию!

Итак мы имеем файл main.c
с содержимым
C:
#include <stdio.h>

int main()
{
    printf("Hello World!\n");
    return 0;
}
Чтобы его с компилировать, нам потребуется компилятор. обычно он называется cc (C compiler) и часто является просто ссылкой на gcc ( GNU C Compiler )
или на clang если он у вас установлен

Что бы превратить исходный код в исполняемую программу нам нужно указать компилятору имя файла
Bash:
cc main.c
Если в программе нет ошибок, то компилятор создаст исполняемый файл a.out и положет в него результат компиляции.
если вы хотите указать другое имя файла с результатом укажите его при помощи опции -o (output)
Bash:
cc main.c -o main
Если вы допустили ошибку, например пропустили точку с запятой
C:
#include <stdio.h>

int main()
{
    printf("Hello World!\n")
    return 0;
}
то компилятор вам об этом скажет
Код:
main.c: In function ‘main’:
main.c:8:29: error: expected ‘;’ before ‘return’
    8 |     printf("Hello World!\n")
      |                             ^
      |                             ;
    9 | 
   10 |     return 0;
      |
если ваша программа использует библиотеки не входящие в стандарт, то нужно указать необходимость их подключения
Bash:
cc main.c -l cairo -l epoxy
Тут я подключил библиотеки для графики cairo и epoxy
Вы должны будете подставить имя нужных вам библиотек


Это тот минимум знаний необходимый чтобы скомпилировать программу на С через терминал.
Если у вас возникли вопросы, задавайте их ниже в треде, я постараюсь ответить

-----------------------------------------------------------------------------------------------------------------------------------------
пользователь solomon специяально для hiddmond.com