Visão Geral
A especificação POSIX estabelece o comando c89 como a interface padronizada de compilação para códigos em conformidade com a norma ANSI C (C89/C90). Este guia prático demonstra como operar essa ferramenta no Ubuntu Linux, detalhando desde a geração direta de binários até a compilação modular em arquivos-objeto e o vínculo com bibliotecas do sistema pelo terminal.
Instalação e Preparação do Ambiente de Compilação
Para disponibilizar as ferramentas de compilação no sistema, execute a atualização das listas do APT e instale os pacotes gcc e c89.

Após o término da instalação, verifique se o executável do utilitário está acessível no $PATH com a chamada a seguir:

No ecossistema Ubuntu, o binário c89 funciona como um script invólucro (wrapper) sobre o compilador GCC, aplicando parâmetros estritos de conformidade ANSI C. Para examinar a versão e a configuração do backend do compilador, utilize a instrução combinada c89 --version 2>/dev/null || gcc -v.
⚙️ [Opções Principais]
-c : Interrompe o processo após a geração do arquivo-objeto (.o), omitindo a etapa de ligação (link).-o : Define o identificador e caminho do executável gerado.-O : Ativa mecanismos de otimização de código para obter maior desempenho na execução.-s : Descarta a tabela de símbolos e metadados de depuração, reduzindo o tamanho final do binário.-g : Embuti informações simbólicas voltadas à depuração do programa.-D : Estabelece definições de macros para uso do pré-processador durante a compilação.-U : Revoga qualquer definição prévia de uma macro específica no pré-processador.-I : Acrescenta diretórios adicionais ao roteiro de busca por arquivos de cabeçalho (.h).-L : Adiciona diretórios suplementares para resolução de bibliotecas estáticas ou dinâmicas.-l : Informa ao linkeditor a inclusão de uma biblioteca externa durante o build.

Criação de Código Fonte Básico e Geração de Executável
Inicie o processo prático construindo um arquivo inicial hello.c que respeite rigorosamente as convenções da sintaxe ANSI C:

Inspecione o conteúdo do arquivo com o utilitário cat para assegurar que a rotina foi gravada sem inconsistências:

Processe o código-fonte por meio do compilador c89, empregando a diretiva -o para atribuir o nome hello ao arquivo executável resultante:

Chame o binário recém-gerado diretamente no shell para confirmar a exibição adequada da mensagem configurada:

Compilação Modular com Arquivos-Objeto (-c) e Linkedição
Em fluxos de desenvolvimento mais complexos, é comum separar a etapa de montagem da fase de ligação. Para simular esse fluxo, crie o arquivo-fonte calc.c:

Acione o comando c89 fornecendo a opção -c, instruindo o compilador a produzir exclusivamente o arquivo-objeto calc.o sem invocar o linkeditor:

Valide a criação bem-sucedida do arquivo calc.o e confira seus atributos no diretório por meio de ls -l calc.o:

Realize a fase final de linkedição executando novamente o comando c89, informando o arquivo .o e definindo o executável final calc com a flag -o:

Invoque o utilitário montado para confirmar se a execução lógica e a saída dos dados no console ocorrem conforme o esperado:

Injeção de Macros (-D) e Vinculação da Biblioteca Matemática (-lm)
Para compreender a manipulação de diretivas de compilação condicional e a resolução de bibliotecas numéricas, monte o script em C app.c a seguir:

Compile o programa repassando a macro -DDEBUG diretamente via terminal e adicione o argumento -lm para associar a biblioteca matemática padrão ao binário app:

Execute o binário final para checar se o bloco de depuração foi incorporado e se os cálculos trigonométricos/algébricos da função foram computados corretamente:

Estes passos consolidam as operações essenciais para quem busca empregar o comando c89 no Ubuntu. O domínio dessa ferramenta assegura total aderência aos padrões POSIX/ANSI e garante a construção consistente de projetos legados em sistemas operacionais Unix-like.