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.
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
- O GCC deve ser instalado em seu sistema.
- Você deve compreender a ligação estática e dinâmica.
- Você tem um conjunto de arquivos fonte ou objeto formando um programa válido, exigindo alguma biblioteca estática foo e nenhuma outra biblioteca.
-
A biblioteca foo está disponível como um arquivo
libfoo.a
, e nenhum arquivolibfoo.so
é fornecido para links dinâmicos.
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
:
- Mude para o diretório que contém seu código.
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.
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
.Para executar o programa mais tarde, simplesmente:
$ ./programa
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”.