3.3. Usando uma biblioteca com GCC
Uma biblioteca é um pacote de código que pode ser reutilizado em seu programa. Uma biblioteca C ou C é composta de duas partes:
- O código da biblioteca
- Arquivos de cabeçalho
Compilação de código que utiliza uma biblioteca
Os arquivos de cabeçalho descrevem a interface da biblioteca: as funções e variáveis disponíveis na biblioteca. As informações dos arquivos de cabeçalho são necessárias para a compilação do código.
Tipicamente, os arquivos de cabeçalho de uma biblioteca serão colocados em um diretório diferente do código da sua aplicação. Para dizer ao GCC onde estão os arquivos de cabeçalho, use a opção -I
:
$ gcc ... -Iinclude_path...
Substitua include_path pelo caminho real para o diretório de arquivos de cabeçalho.
A opção -I
pode ser usada várias vezes para adicionar vários diretórios com arquivos de cabeçalho. Ao procurar por um arquivo de cabeçalho, estes diretórios são pesquisados na ordem de aparecimento nas opções -I
.
Código de ligação que utiliza uma biblioteca
Ao ligar o arquivo executável, tanto o código objeto de sua aplicação quanto o código binário da biblioteca devem estar disponíveis. O código para bibliotecas estáticas e dinâmicas está presente em diferentes formas:
-
As bibliotecas estáticas estão disponíveis como arquivos. Elas contêm um grupo de arquivos objetos. O arquivo de arquivo tem uma extensão de nome de arquivo
.a
. -
Bibliotecas dinâmicas estão disponíveis como objetos compartilhados. Elas são uma forma de arquivo executável. Um objeto compartilhado tem uma extensão de nome de arquivo
.so
.
Para dizer ao GCC onde estão os arquivos ou arquivos objetos compartilhados de uma biblioteca, use a opção -L
:
$ gcc ... -Llibrary_path -lfoo...
Substituir library_path pelo caminho real para o diretório da biblioteca.
A opção -L
pode ser usada várias vezes para adicionar vários diretórios. Ao procurar uma biblioteca, estes diretórios são pesquisados na ordem de suas opções -L
.
A ordem das opções é importante: O GCC não pode se conectar a uma biblioteca foo a menos que conheça o diretório com esta biblioteca. Portanto, use as opções -L
para especificar os diretórios das bibliotecas antes de usar as opções -l
para fazer um link contra bibliotecas.
Compilação e vinculação de código que utiliza uma biblioteca em uma única etapa
Quando a situação permitir que o código seja compilado e vinculado em um comando gcc
, use as opções para ambas as situações mencionadas acima de uma só vez.
Recursos adicionais
- Usando a Coleção de Compiladores GNU (GCC)
- Usando a Coleção de Compiladores GNU (GCC)