Red Hat Training

A Red Hat training course is available for RHEL 8

3.4. Usando uma biblioteca estática com GCC

As bibliotecas estáticas estão disponíveis como arquivos contendo arquivos objetos. Após a ligação, elas se tornam parte do arquivo executável resultante.

Nota

A Red Hat desencoraja o uso de ligação estática por razões de segurança. Ver Seção 3.2, “Ligação estática e dinâmica”. Use links estáticos somente quando necessário, especialmente contra bibliotecas fornecidas pela Red Hat.

Pré-requisitos

Nota

A maioria das bibliotecas que fazem parte do Red Hat Enterprise Linux são suportadas apenas para links dinâmicos. Os passos abaixo só funcionam para as bibliotecas que são not habilitadas para links dinâmicos. Veja Seção 3.2, “Ligação estática e dinâmica”.

Procedimento

Para ligar um programa a partir de arquivos fonte e objeto, acrescentando uma biblioteca ligada estaticamente foo, que pode ser encontrada como um arquivo libfoo.a:

  1. Mude para o diretório que contém seu código.
  2. Compilar os arquivos fonte do programa com os cabeçalhos da biblioteca foo:

    $ gcc ... -Iheader_path -c ...

    Substitua header_path por um caminho para um diretório contendo os arquivos de cabeçalho para a biblioteca foo.

  3. Ligue o programa com a biblioteca foo:

    $ gcc ... -Llibrary_path -lfoo...

    Substitua library_path por um caminho para um diretório contendo o arquivo libfoo.a.

  4. Para executar o programa mais tarde, simplesmente:

    $ ./programa
Cuidado

A opção -static GCC relacionada à ligação estática proíbe todas as ligações dinâmicas. Em vez disso, use as opções -Wl,-Bstatic e -Wl,-Bdynamic para controlar com mais precisão o comportamento do linker. Ver Seção 3.6, “Usando tanto bibliotecas estáticas como dinâmicas com GCC”.