Mise à jour le chemin d'inclusion dans linux
J'ai quelques fichiers d'en-têtes /mon/chemin/vers/le /dossier. Je sais comment inclure ces fichiers dans le nouveau programme en C, mais à chaque fois que j'ai besoin de type de chemin d'accès complet au fichier d'en-tête avant de l'inclure. Puis-je définir certains variable de chemin d'accès dans linux tel qu'il recherche automatiquement les fichiers d'en-tête ?
- vous pouvez ajouter le chemin d'accès à votre fichier makefile ? si vous utilisez celui qui est
- Avez-vous l'utilisation de gcc? Avez-vous l'utiliser directement, ou vous utilisez un makefile?
- - Je l'utiliser directement
- Si vous utilisez
gcc
directement (ce qui est généralement une mauvaise idée, il est préférable d'utiliser certains builder commemake
ouomake
ou un script), il suffit de la passer à l'approprié-I
votre/include/dir drapeaux. N'oubliez pas de passer-Wall
àgcc
.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer un fichier makefile. Un exemple minimal serait:
Partir de là vous pouvez améliorer ce makefile dans de nombreuses façons. Le plus important, sans doute, serait à l'état de la compilation des dépendances (donc uniquement les fichiers modifiés sont recompilés).
Comme une référence, vous avez ici un lien vers le Make de GNU de documentation.
Si vous ne souhaitez pas utiliser les fichiers makefile, vous pouvez toujours définir une variable d'environnement pour le rendre plus facile à taper la compilation de commande:
Ensuite, vous pouvez compiler votre programme comme:
Vous pouvez définir
MY_INC_PATH
variable dans le fichier.bashrc
, ou probablement mieux, de créer un fichier dans un endroit très pratique contenant la définition de la variable. Ensuite, vous pouvez utilisersource
pour définir cette variable dans le shell en cours:Je pense, cependant, qu'à l'aide d'un makefile est de beaucoup préférable.
-I
et-L
vous permettent de personnaliser les en-têtes et bibliothèques de chemins. Bien sûr, vous ne voulez pas taper le long chemin tout le temps, de sorte que vous besoin d'une sorte de solution comme ceux que j'ai mentionné 🙂il y a une question similaire, susceptible de mieux résolu (si vous êtes intéressé par une solution permanente): https://stackoverflow.com/a/558819/1408096
Essayez de définir C_INCLUDE_PATH (pour C fichiers d'en-tête) ou CPLUS_INCLUDE_PATH (pour C++ fichiers d'en-tête).
Bravo:jcrossley3
Je ne suis pas sous Linux, et je ne peut pas être pris la peine de redémarrer pour vérifier si tout est vrai, mais avez-vous essayé de faire des liens symboliques? Par exemple, si vous êtes sur Ubuntu:
Alors quand vous voulez inclure stuf, vous pouvez utiliser: