1. Preliminares

1.1. ELF versus a.out, libc 5 versus 6

Três anos atrás, quando este documento foi criado, eu iniciei esta seção dizendo que "O desenvolvimento do Linux está em um estado de fluxo neste momento" e prossegui descrevendo como ELF estava substituindo a.out, o formato binário mais antigo.

Ele ainda está em um estado de fluxo. Ele sempre estará. Ainda que aquela alteração em particular tenha ocorrido há muito tempo, o desenvolvimento do kernel do Linux e do sistema ao seu redor continua a acontecer, e como resultado, as coisas mudam para os desenvolvedores. Então, é uma boa idéia saber, logo de início, que tipo de sistema você tem à sua frente.

Os possíveis candidatos, por ordem de idade, são



Como identificá-los? A forma mais simples é pegar um binário que você considera como típico (por exemplo /bin/ls) e analisá-lo com ldd. Uma das bibliotecas listadas deve ser libc - verifique o seu número de versão.

    $ ldd /bin/ls
            libc.so.6 => /lib/libc.so.6 (0x4000e000)
            /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)


Este documento foi criado em um sistema Debian 2.1, de forma que não há surpresa aqui.

É inteiramente possível que o sistema que você está usando contenha uma mistura de versões diferentes. O que você provavelmente quer saber neste caso é para qual versão o ambiente de desenvolvimento em C está configurado, de forma que o melhor a fazer é compilar um "alô mundo" e analisar a saída assim criada com ldd. Note que por razões históricas, gcc gera, como padrão, um arquivo de saída chamado a.out mesmo em sistemas ELF, de modo que não conclua qualquer coisa a partir disto.

1.2. Administração

As informações de copyright e detalhes legais semelhantes podem ser encontrados no fim deste documento, junto aos avisos regulamentares sobre perguntar questões tolas na Usenet, revelar sua ignorância sobre a linguagem C, relatando bugs que não existem, e tocar seu nariz enquanto mascar chiclete.

1.3. Tipografia

Se você está lendo isto no formato Postscript, dvi, ou html, você verá um pouco mais de variação nas letras do que pessoas com a versão de texto simples. Em particular, nomes de arquivos, comandos, saída de comandos e trechos de código fonte são apresentados em algum tipo de letra monoespaçada, enquanto que 'variáveis' e outras coisas que precisam ser enfatizadas estão enfatizadas.

Você também tem um índice usável. Em dvi ou postscript, os números no índice são números de seção. Em HTML eles apenas são números atribuídos sequencialmente nos quais é possível clicar. Na versão de texto simples, eles realmente são apenas números. Obtenha um upgrade!

A sintaxe do shell Bourne (no lugar do shell C) é usada nos exemplos. Usuários do shell C vão querer usar

    % setenv FOO bar
onde eu escrevi
    $ FOO=bar; export FOO


Se o prompt exibido é # ao invés de $, o comando apresentado provavelmente só funcionará como root. É claro que eu não aceito qualquer responsabilidade por qualquer coisa que aconteça com o seu sistema como resultado do uso destes exemplos. Tenha um bom dia :-)