Arquivos históricos do BR-Linux.org apresenta:

Linux in Brazil (Programação )

Programando para Linux

Copyright (c) 2000 Ademar de Souza Reis Jr. - ademar@ademar.org - Redistribuição permitida e incentivada.

Introdução

Este documento visa passar algumas explicações sobre a programação em ambiente linux, e é voltado para estudantes e programadores que queiram migrar de outros ambientes ou ter uma inicação à programação nesse SO. Vamos aqui abordar algumas características do sistema e alguns utilitários básicos.

Para a leitura deste, você deve ter um pequeno conhecimento prévio do sistema de arquivos do linux, sua estrutura de diretórios e usuários, além de uma certa familiaridade com a sintaxe de comandos. Você também deve saber consultar uma página manual e documentação info, e ainda assumimos que você domina um editor de textos simples, como o vi ou o emacs e, obviamente, têm conhecimentos de programação (os exemplos estão em C).

Se você ainda não se sente familiar com o sistema linux, é recomendado que, antes mesmo de continuar a leitura deste texto, você consulte outras fontes de documentação introdutória. Entre elas, estão dois livros em inglês (talvez existam traduções para o português) aqui listados, e lembre-se que há muita documentação de qualidade na internet que pode ser consultada gratuitamente. Os livros recomendados são:

  • Running Linux 3rd edition; Matt Welsh, Kalle Dalheimer, Lar Kaufman - O'Reilly & Associates, ISBN 156592469X

  • The C Programming Language - 2th edition; Brian W. Kernighan - Prentice Hall, ISBN 0131103628

    Agora voltando ao nosso assunto principal, podemos dizer que o ato de programar (independente do ambiente, e do ponto de vista prático), consiste basicamente em:

    escrever -> compilar -> depurar

    Obviamente cada etapa pode ser um pouco extendida ou contraída, dependendo da complexidade de seu programa. (Um clássico "Hello World" talvez não precise de depuração, certo?).

    Pra quem está acostumado a programar em outros ambientes, como em MS-DOS, essas etapas geralmene estão agrupadas em uma IDE (Interface de DEsenvolvimento), como o Borland C. Embora existam IDE's disponíveis para o ambiente do linux, a maioria dos programadores opta por trabalhar independentemente, escolhendo suas ferramentas favoritas.

    Sendo assim, quando programamos em linux, geralmente utilizamos um utilitário para cada etapa. Isso apresenta algumas vantagens como flexibilidade e modularidade embora, a princípio, possa parecer um pouco mais complicado do que o usual. Com várias pequenas ferramentas, cada uma cumprindo seu papel, é possível chegar a grandes resultados... essa é uma das filosofias mais antigas e usadas no mundo UNIX, e não achamos que seja diferente na hora de programar.

    O que você precisa para criar um programa

    Seguindo o raciocínio visto para as etapas da programação, precisamos dominar os seguintes tipos de utilitários:

    1 - Editor de textos

    Existem vários editores disponíveis no ambiente linux, sendo que alguns apresentam funcionalidades extras para programadores (como identação automática, sintaxe colorida, verificação de erros, etc).

    Os dois editores mais utilizados são o vim (VI Improved) e o Emacs. Recomendamos que você utilize o editor de sua preferência, e deixamos a escolha para você. Simplesmente teste as alternativas e utilize aquele no qual você se sinta mais confortável. (Particularmente, prefiro o VI/vim. Embora seu aprendizado seja um pouco difícil ou até mesmo "traumático" para usuários iniciantes, ele se tornará seu "melhor amigo" na hora de programar).

    Compilador

    A tarefa do compilador é a mais importante. Existem compiladores para as mais diversas linguagens no linux e, obviamente, você deve escolher aquele que melhor suprir às suas necessidades.

    Os dois compiladores mais utilizados são o gcc e o g++. Respectivamente, GNU C Compiler e GNU C++ Compiler. (As coisas no mundo GNU mudam muito... na verdade, o gcc e o g++ são um único projeto, e, mais na verdade ainda, você pode compilar código C++ com o gcc e C com o g++, mas, no momento, não se preocupe com esses detalhes).

    O mais importante para um programador conhecer em termos de compiladores são suas flags de compilação. Elas se dividem em:

    Warnings Ajudam a encontrar falhas na sintaxe e lógica do programa, falhas que muitas vezes não impedem a compilação deste. Principalmente se você programa em C, você deve utilizar várias flags, pois senão você corre o risco de que um código muito mal escrito seja compilado sem apresentar erros (o que extenderá a etapa de depuração).

    Otimização Permitem que o compilador utilize instruções otimizadas ou específicas de um determinado processador, ou mesmo altere detalhes do código resultante, elminando redundâncias, "desenrolando" loops, etc. Existem também versões otimizadas dos principais compiladores para trabalhar com determinadas arquiteturas, como o Pentium, PentiumPro, etc.

    Depurador

    Essa é a ferramenta que você utilizará quando as coisas não funcionam da primeira vez, ou em outras palavras, esse é a ferramenta que você utilizará sempre... :)

    O depurador mais utilizado no ambiente linux é o gdb (GNU DeBuguer). Ele é um poderoso e excelente depurador para as linguagens C, C++ e Fortran. Existem inúmeros "frontends" gráficos para o GDB e um dos mais completos é o ddd (Data Display Debuger). Vale a pena você dar uma olhada se você prefere uma interface gráfica à console texto. Consulte a documentação apropriada (no caso, a página manual é um bom começo).

    Outros

    Existem diversos outros utilitários que auxiliam muito o programador no ambiente linux. Um dos mais indispensáveis e úteis é o make, que permite otimizar e automatizar várias etapas da compilação e é indispensável quando trabalhamos com vários módulos. Ele será visto mais adiante.

    Além deste, existem também bibliotecas para depuração, utilitários gráficos, ferramentas para layout, controle de versão, instalação, configuração, etc. Eis uma lista do que você pode achar interessante: (procure documentação a respeito nas páginas manuais e nos repositórios de software linux): EletricFence, checker, indent, diff, patch, autoconf e cvs.

    De um modo geral, pelo que vimos até aqui você precisará dominar pelo menos quatro ferramentas para programar "satisfatóriamente" em linux: editor de textos, compilador, depurador e o make. Mas novamente eu insito: não pense que o número de ferramentas faz do linux um ambiente difícil para programação. O tempo gasto com o aprendizado valerá a pena no final.

    Vamos agora analisar de uma forma mais detalhada os utilitários mais importantes, ou pelo menos indispensáveis, para programação em linguagem C:


    O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.