problèmes de machine virtuelle windows montage compilateur répertoire

Rappelez-vous le processus de résolution d'un problème, il suffit de regarder à partir de la connaissance de linux.

Le problème est, il y a un code sur le compilateur serveur de l'entreprise est pas de problème, alors ne passe souvent du code est compilé dans le serveur un peu de mal, je voulais mettre en place un environnement de construction sur sa propre machine virtuelle. Après la mise en place de l'environnement, accessible via monté directement sur une machine virtuelle sous le code dans les fenêtres natives compilées, mais compilé.

Le problème peut être rationalisé de manière d'un tel, il y a un cpp nommé Termios.cpp, son code contient termios.h ce fichier d'en-tête, qui contient le termios.h termios.h. Termios.cpp et termios.h leur propre code, termios.h est la tête du système de fichiers, ne me demandez pas pourquoi j'utiliser le même nom, le code existant précédent ~~~. En Termios.cpp qui utilisent des macros telles que B9600 et autres, une erreur de compilation de machine virtuelle ne peut pas trouver la définition de la macro, mais sur les serveurs de la société compilent correctement. Recherche suit termios.h :( serveurs de l'entreprise et des machines virtuelles des résultats similaires)

L' analyse des références du programme sont /usr/include/termios.h, ouvrez le fichier trouvé dans le fichier contient les bits / termios.h, à savoir /usr/include/x86_64-linux-gnu/bits/termios.h, dans ce document il des définitions de macros et similaires, tels que B9600. le contenu de la machine virtuelle à l' intérieur des documents, aussi, pourquoi l'erreur du compilateur il? Le premier point suspect à l' intérieur de la machine virtuelle qui ne contient pas /usr/include/termios.h, « qztest » Ce programme détermine le contenu d'impression ne contient pas ce fichier d' en- tête en ajoutant erreur # dans le fichier d' en- tête. termios.h est inclus dans d' autres répertoires? Recherche par regard gcc chemin improbable (chemin de recherche voir mon article https://blog.csdn.net/wuzhidefeng/article/details/76854655 ), mais ne vous inquiétez pas, dans d' autres répertoires ajoutent également une erreur # « qztest » n'a pas trouvé une telle macro qui contient ces en- têtes. Mais quand compilateur gcc ne parvient pas à trouver le fichier d' en- tête qui fait référence à un programme à la fin est où le premier document , il?

commande utile est venu, g ++ commande -M. En g ++ -M Termios.cpp -I ../inc/ -I ../../globalinclude/ std = c ++ 11 | grep termi compilé séparément sur ce cpp le voir dans l'utilisation finale à laquelle les fichiers d'en-tête, les résultats comme suit:

Les résultats montrent qu'il a trouvé ../inc/termios.h, mais seulement dans ce répertoire termios.h, ce document ne termios.h ah. Trouverez dans le répertoire et les fichiers ne sont pas trouvés, il est gcc pas sensible à la casse? Ah pas raisonnable. Essayez copie termios.h dans un Termios1.h, puis inclus dans le Termios.cpp dans Termios1.h, réutilisation g ++ -M trouve encore ../inc/termios.h. Le termios.h renommé, recompilation, avant d'ajouter l'erreur # « qztest » imprimé. Termios.h termios.h semble être aussi autonome.

Ensuite, ne pas monter par le chemin, il suffit de copier l'ensemble de la machine virtuelle à l'intérieur du code recompilation, il n'y a pas d'erreur, compiler avec succès.

Conclusion: sous les fenêtres d'accès au code dans ubuntu montage, gcc temps de compilation peut être trompeur, insensible à la casse (pour être spécifiques raisons profondes derrière la libre puis aller au fond)

Leçon: 1, le nommage des fichiers de réglementer, de ne pas engager dans un tel comme nom de fichier, seulement dans le cas où la même chose, pas les fichiers système et les noms en double

           2, essayez de ne pas accéder aux fichiers multiplateformes directement, vous pouvez le copier et l'accès

Publié 12 articles originaux · a gagné les éloges 4 · vues 20000 +

Je suppose que tu aimes

Origine blog.csdn.net/wuzhidefeng/article/details/105298654
conseillé
Classement