Onde as bibliotecas devem estar localizadas para o processo de desenvolvimento?


3

Com as bibliotecas SDL, por exemplo, seria necessário apontar para os cabeçalhos no início do código, da seguinte forma:

#include <SDL/SDL.h> 

E, ao compilar com o GCC, por exemplo, a biblioteca deveria ser incluída com:

gcc project.cpp -o project -l/path/to/library/SDL

Portanto, quando você estiver desenvolvendo um programa com uma biblioteca específica para incluir, onde os arquivos de cabeçalho e a biblioteca devem estar localizados para que o GCC possa reconhecer de onde extrair essas informações? Eles precisam ser armazenados no diretório usr ou você pode dizer ao GCC para apontar para qualquer local que você quiser?

Isso é específico para o desenvolvimento no Ubuntu, pois é a plataforma para a qual estou desenvolvendo, mas qualquer plataforma * nix provavelmente seria semelhante.

Respostas:


2

O compilador GCC procurará por cabeçalhos, dependendo de como você declara o cabeçalho, para que haja duas possibilidades

Declarando o cabeçalho usando colchetes angulares <>

#include <math.h>

Nesse caso, o compilador procurará nos locais padrão do cabeçalho do sistema no Ubuntu.

  • /usr/local/include
  • /usr/target/include
  • /usr/include

Portanto, se sua biblioteca necessária tiver seu arquivo de cabeçalho em um desses locais, o GCC deve encontrá-lo por padrão.

Declarando o cabeçalho com ""

#include "myheader.h"

ou

#include "myheaders/header.h"

Nesse caso, o compilador procurará no mesmo diretório que o arquivo .c, a menos que você diga ao gcc para procurar em outro lugar usando a -Idiropção

Mais informações podem ser encontradas neste artigo sobre Compilação, vinculação, Makefile, arquivos de cabeçalho no gribblelab.org


Obrigado pela sua resposta e elaborar sobre como o compilador irá olhar para estas opções :)
Illum interactivo


Ótima referência! @SharadGautam
Illüm Interactive
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.