web-dev-qa-db-fra.com

Comment rendre les nouveaux fichiers d'en-tête universellement disponibles?

Je viens de télécharger de nouveaux fichiers d'en-tête et un dossier que je souhaite rendre disponible. Premièrement, je voudrais les rendre disponibles à tout fichier souhaitant les utiliser. Donc, j'aimerais pouvoir inclure le nouveau fichier d'en-tête (appelez-le newheader.h) où je veux, tout comme math.h, par exemple. Où devrais-je le mettre?

Deuxièmement, je souhaite mettre ces fichiers à la disposition de tous les utilisateurs. J'ai des permissions root. Y a-t-il un répertoire spécial dans lequel j'ai besoin de le mettre? Merci beaucoup!

5
paulinho

Stockez-les dans /usr/local/include. Depuis http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html , les éléments de ce répertoire sont "... à l'abri de tout écrasement lorsque le logiciel système est mis à jour". , ce qui est important car vous ne voulez pas que les fichiers d’en-têtes que vous avez téléchargés soient gâchés par les mises à jour du système, ce qui peut arriver si vous les mettez dans /usr/include.

10
dsstorefile1

Sur MY system, le répertoire /usr/local/include/ existe et est vide. La norme de hiérarchie Filsystem indique ( FHS 3. ) que le répertoire à utiliser est /usr/local/include. Les fichiers doivent être lisibles par tout le monde (0444) et les répertoires doivent être interrogeables (0555).

6
waltinator

La question est, que voulez-vous réaliser?

Généralement, vous avez trois scénarios:

  • développement
  • installation locale (dans votre $HOME)
  • installation globale

Pour les 2 premiers, vous devriez probablement utiliser le commutateur -I pour donner un chemin aux en-têtes. Le premier serait probablement -I../mylib/include, le second pourrait être -I/home/user/local_libs/somelib/include.

Le troisième est une installation globale, qui devrait les placer dans /usr/local/include, mais géré par un outil comme automake ou cmake. Lors de l'empaquetage, le responsable doit adapter le chemin d'installation et/ou le chemin d'inclusion pour installer les en-têtes à /usr/include.

Lors de l’utilisation d’automake, vous pouvez avoir des notifications au-delà de --prefixparamètre par défaut à /usr/local pour une installation sûre qui n’interfère pas avec les paquets système, alors que les responsables Debian exécutent ./configure --prefix=/usr dans leurs scripts. Le chemin d'inclusion est construit à partir de ce préfixe, il suit donc l'installation du package.

1
allo