Onde o Ubuntu armazena seus arquivos de biblioteca?

17

Eu quero adicionar minha própria biblioteca para usar na compilação c, mas realmente não sei onde o ubuntu a armazena.

david25
fonte
5
Ele armazena em / usr / lib & / usr / include
karthick87
eu encontrei minha biblioteca em / usr / include como devo colocá-las? devo apenas colocar um arquivo de cabeçalho e um arquivo ac perto dele ou devo escrever o cabeçalho e a função juntos em um arquivo .h?
david25
3
Bibliotecas e cabeçalhos são coisas diferentes, / usr / include NÃO contém bibliotecas, contém cabeçalhos que são definições de funções / objetos disponíveis nas bibliotecas. A questão deve ser melhorada, é difícil entender o que você está tentando alcançar.
João Pinto

Respostas:

11

Com base nos seus comentários à sua pergunta, acho que você está realmente perguntando: "Como instalo uma biblioteca personalizada que escrevi e onde devo colocá-la?"

Em geral, as coisas criadas localmente para outras pessoas na máquina para o usuário são colocadas na árvore / usr / local. O arquivo de cabeçalho deve ir para / usr / local / include. A biblioteca compilada deve entrar em / usr / local / lib. O arquivo .c não faz parte da biblioteca, faz parte da fonte e não é algo normalmente não instalado para o uso do usuário final. Você precisará de acesso root para colocar arquivos em um desses locais.

Para construir a biblioteca, você precisará primeiro decidir se deseja uma biblioteca estática ou dinâmica (compartilhada). Mais informações sobre a criação de uma biblioteca compartilhada podem ser encontradas na seção 3.4, Criando uma biblioteca compartilhada em http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html . (Eles também têm recomendações sobre onde colocar as coisas - a maioria dos desenvolvedores tem uma opinião ou três :-))

jwernerny
fonte
11

Dependendo da biblioteca, o ubuntu armazena suas bibliotecas principalmente em três locais

  1. / lib
  2. / usr / lib
  3. / usr / local / lib

A seguir, é apresentado o padrão de hierarquia do sistema de arquivos

/ lib

O diretório / lib contém as imagens da biblioteca compartilhada necessárias para inicializar o sistema e executar os comandos no sistema de arquivos raiz, ie. por binários em / bin e / sbin.

/ usr / lib

/ usr / lib inclui arquivos de objetos, bibliotecas e binários internos que não devem ser executados diretamente por usuários ou scripts de shell. [22]

Os aplicativos podem usar um único subdiretório em / usr / lib. Se um aplicativo usar um subdiretório, todos os dados dependentes da arquitetura usados ​​exclusivamente pelo aplicativo deverão ser colocados dentro desse subdiretório.

/ usr / local / lib contém bibliotecas locais, ou seja, uma específica para este sistema, mas não consigo encontrar referências a / usr / local / lib no FHS, apenas contém explicações para / usr / local.

binW
fonte
0

Você deve informar ao compilador onde ele pode encontrar sua biblioteca. Supondo que o caminho para sua biblioteca é "/path/to/lib/libfoo.a", você pode compilar e vincular seu programa "hello.c" assim:

gcc -L/path/to/lib -lfoo hello.c

Isso não é específico para o Ubuntu, na verdade todos os compiladores C que conheço suportam esses sinalizadores.

Frank
fonte
-2

No Ubuntu eles são encontrados em /usr/include.

Wachira, Evanson Wang'ombe
fonte
1
Arquivos de cabeçalho estão/usr/include. Os binários reais de uma biblioteca não são armazenados lá. Os cabeçalhos podem ser considerados parte de uma biblioteca, mas precisam ser instalados separadamente e são usados ​​para compilar programas que usam uma biblioteca. Após a compilação de um programa que usa uma biblioteca, ele não precisa mais nem usa os arquivos de cabeçalho.
Eliah Kagan 30/08/2013