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 ~/devDentro dela, crie um diretório chamado c_cpp_projects e navegue para dentro dele.
mkdir -p c_cpp_projectscd c_cpp_projectsPrograma
Seção intitulada “Programa”Crie um outro diretório chamado hello_world e também navegue para dentro nele.
mkdir -p hello_worldcd hello_worldCrie um arquivo chamado hello_world.c.
touch hello_world.cA estrutura de pastas ficará como a seguir.
Directorydev
Directoryc_cpp_projects
Directoryhello_world
- 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;-includepara incluir um arquivo de cabeçalho;-gpara 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_worldSe 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_projectsCrie um novo diretório chamado separate_function e navegue para dentro dele.
mkdir -p separate_functioncd separate_functionCrie um arquivo chamado main.c.
touch main.cEntão abra o Visual Studio Code no diretório atual.
code .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 estrutura de pastas ficará como a seguir.
Directorydev
Directoryc_cpp_projects
Directoryseparate_function
- functions.c
- main.c
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" >> .gitignoreA estrutura de pastas ficará como a seguir.
Directorydev
Directoryc_cpp_projects
Directoryseparate_function
- .gitignore
- functions.c
- main.c
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.cPor 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