Compilando programas em C
Neste capítulo, vamos aprender a compilar e executar programas com um único arquivo e projetos na linguagem C.
No terminal, abra a pasta dev
que criamos anteriormente para guardar nossos projetos.
mkdir -p ~/devcd ~/dev
Dentro dela, crie um diretório chamado c_cpp_projects
e navegue para dentro dele.
mkdir -p c_cpp_projectscd c_cpp_projects
Programa
Seção intitulada “Programa”Crie um outro diretório chamado `hello_world e também navegue para dentro nele.
mkdir -p hello_worldcd hello_world
Crie um arquivo chamado hello_world.c
.
touch hello_world.c
Abra o Visual Studio Code neste diretório.
code .
Copie o seguinte código para o arquivo hello_world.c
.
Lembre-se de salvar o arquivo.
#include <stdio.h>
int main() { printf("Hello, world!\nThis is my first code in C.\n"); return 0;}
Vamos utilizar o Clang para compilar o código. O comando de compilação do Clang tem a seguinte estrutura:
clang [opções] <arquivo>.c -include -o <executável>
[opções]
são os argumentos de compilação, como:-o <arquivo>
para especificar o arquivo de saída;-include
para incluir um arquivo de cabeçalho;-g
para incluir informações de debug;- entre outras.
<arquivo>.c
é o nome do arquivo que será compilado.<executável>
é o nome do arquivo executável de saída.
Assim, com o terminal aberto na pasta ~/dev/c_cpp_projects/hello_world
, execute:
clang hello_world.c -o hello_world
Se tudo ocorrer bem, um arquivo executável será criado.
Ele se chamará apenas hello_world
.
Diferentemente do Windows, em que o executável tem a extensão .exe
, no Linux não é necessário adicionar nenhuma extensão ao arquivo executável.

Para executar o programa, basta chamar o arquivo executável.
./hello_world

Projeto
Seção intitulada “Projeto”Retorne para a pasta c_cpp_projects
.
cd ~/dev/c_cpp_projects
Crie um novo diretório chamado separate_function
e navegue para dentro dele.
mkdir -p separate_functioncd separate_function
Crie um arquivo chamado main.c
.
Então abra o Visual Studio Code no diretório atual.
touch main.ccode .
Copie o seguinte código para o arquivo main.c
.
#include <stdio.h>
int sum(int a, int b);
int main() { int a = 5, b = 7; int result = sum(a, b); printf("The sum of %d and %d is %d.\n", a, b, result); return 0;}
Crie um outro arquivo chamado functions.c
e cole nele o código a seguir.
int sum(int a, int b) { return a + b; }
A função principal main
chama a função sum
, que está definida em outro arquivo.
Então, para fazer a compilação, precisamos passar os dois arquivos para o compilador.
Internamente, o compilador fará a compilação de cada arquivo separadamente e, em seguida, fará a ligação entre eles.
Para compilar o projeto, execute o comando abaixo no terminal.
Definimos os arquivos de entrada main.c
e functions.c
.
Então, usamos a opção -o
para especificar o nome do arquivo de saída, que será um executável.
clang main.c functions.c -o separate_function./separate_function

Podemos usar o Git para versionar nossos projetos. Para isso, precisamos inicializar o repositório Git no diretório do projeto. Faça isso com o comando abaixo.
git init
É interessante também criar um arquivo chamado .gitignore
para que arquivos privados ou desnecessários não sejam enviados para o repositório.
Um desses arquivos é o executável que acabamos de criar.
Crie o arquivo .gitignore
e adicione o nome do executável separate_function
dentro dele.
echo "separate_function" >> .gitignore
Então, precisamos adicionar os arquivos ao repositório, o que comumente é chamado de staging.
O comando abaixo adiciona todos os arquivos do diretório atual, exceto aqueles que estão listados no arquivo .gitignore
.
git add .
Podemos verificar quais arquivos foram adicionados com o comando abaixo.
git status# On branch main
# No commits yet
# Changes to be committed:# (use "git rm --cached <file>..." to unstage)# new file: .clang-format# new file: .clang-tidy# new file: .gitignore# new file: functions.c# new file: main.c
Por fim, faremos o commit dos arquivos com a mensagem Initialize project
.
Para definir a mensagem, usamos a opção -m
seguida do texto entre aspas.
git commit -m "Initialize project"
Podemos verificar o histórico de commits com o comando abaixo.
git log# commit 45b6e7e35917c5ccace23370cae78f0bbf61d3b2 (HEAD -> main)# Author: Gabriel Malosto <gabriel@email.com># Date: Mon Apr 28 00:51:26 2025 -0300
# Initialize project# (END)
O log abre um ambiente de leitura, em que podemos navegar pelas mensagens de commit.
Para sair dele, pressione