Où Ubuntu stocke-t-il ses fichiers de bibliothèque?

17

Je veux ajouter ma propre bibliothèque à utiliser pour la compilation en c, mais je ne sais pas vraiment où ubuntu la stocke.

david25
la source
5
Il stocke dans / usr / lib & / usr / include
karthick87
j'ai trouvé ma bibliothèque dans / usr / include comment dois-je procéder pour les insérer? dois-je simplement mettre un fichier d'en-tête et un fichier ac à proximité ou dois-je écrire l'en-tête et la fonction ensemble dans un fichier .h?
david25
3
Les bibliothèques et les en-têtes sont des choses différentes, / usr / include ne contient PAS de bibliothèques, il contient des en-têtes qui sont des définitions de fonctions / objets disponibles dans les bibliothèques. La question devrait être améliorée, il est difficile de comprendre ce que vous essayez de réaliser.
João Pinto

Réponses:

11

Sur la base de vos commentaires à votre question, je pense que ce que vous demandez vraiment est "Comment installer une bibliothèque personnalisée que j'ai écrite et où dois-je la mettre?"

En général, les éléments construits localement pour d'autres sur la machine à l'utilisateur sont placés dans l'arborescence / usr / local. Le fichier d'en-tête doit aller dans / usr / local / include. La bibliothèque compilée doit aller dans / usr / local / lib. Le fichier .c ne fait pas partie de la bibliothèque, il fait partie de la source et n'est pas quelque chose normalement non installé pour l'usage de l'utilisateur final. Vous aurez besoin d'un accès root pour placer les fichiers dans l'un de ces emplacements.

Pour construire la bibliothèque, vous devrez d'abord construire si vous voulez une bibliothèque statique ou dynamique (partagée). Plus d'informations sur la création d'une bibliothèque partagée peuvent être trouvées dans la section 3.4, Création d'une bibliothèque partagée à http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html . (Ils ont également des recommandations sur l'endroit où mettre les choses - la plupart des développeurs auront une opinion ou trois :-))

jwernerny
la source
11

Selon la bibliothèque, ubuntu stocke ses bibliothèques principalement dans trois endroits

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

Ce qui suit provient de la norme de hiérarchie du système de fichiers

/ lib

Le répertoire / lib contient les images de bibliothèque partagée nécessaires pour démarrer le système et exécuter les commandes dans le système de fichiers racine, c'est-à-dire. par des binaires dans / bin et / sbin.

/ usr / lib

/ usr / lib comprend des fichiers objets, des bibliothèques et des fichiers binaires internes qui ne sont pas destinés à être exécutés directement par les utilisateurs ou les scripts shell. [22]

Les applications peuvent utiliser un seul sous-répertoire sous / usr / lib. Si une application utilise un sous-répertoire, toutes les données dépendantes de l'architecture utilisées exclusivement par l'application doivent être placées dans ce sous-répertoire.

/ usr / local / lib contient des bibliothèques locales c'est-à-dire spécifiques à ce système mais je ne trouve pas de références à / usr / local / lib dans FHS, il ne contient que des explications pour / usr / local.

binW
la source
0

Vous devez indiquer au compilateur où il peut trouver votre bibliothèque. Supposons que le chemin de votre bibliothèque soit "/path/to/lib/libfoo.a", vous pouvez compiler et lier votre programme "hello.c" comme ceci:

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

Ce n'est pas spécifique à Ubuntu, en fait tous les compilateurs C que je connais prennent en charge ces drapeaux.

Franc
la source
-2

Dans Ubuntu, ils se trouvent dans /usr/include.

Evanson Wachira Wang'ombe
la source
1
Les fichiers d'en- tête sont dans/usr/include. Les binaires réels d'une bibliothèque n'y sont pas stockés. Les en-têtes peuvent être considérés comme faisant partie d'une bibliothèque, mais ils doivent être installés séparément, et ils sont utilisés pour compiler des programmes qui utilisent une bibliothèque. Une fois qu'un programme qui utilise une bibliothèque a été compilé, il n'a plus besoin ni n'utilise les fichiers d'en-tête.
Eliah Kagan