problemas de las máquinas virtuales se montan directorio de Windows compilador

Recuerde que el proceso de resolución de un problema, sólo mirar a partir del conocimiento de Linux.

El problema es el siguiente, hay un código de compilador servidor de la compañía no es ningún problema, luego se sienten a menudo pasar de código se compila en el servidor de un pequeño problema, que quería establecer un entorno de construcción en su propia máquina virtual. Después de la configuración del entorno, se accede a través montados directamente en una máquina virtual bajo el código en ventanas nativas compilados, pero compilado.

El problema puede ser simplificado de tal manera, hay un coste por llamada Termios.cpp, su código contiene termios.h este archivo de cabecera, que contiene el termios.h termios.h. Termios.cpp y termios.h su propio código, termios.h es la cabeza del sistema de archivos, no me pregunta por qué utilizo el mismo nombre, el código heredado anterior ~~~. En Termios.cpp que utilizan las macros como B9600 y similares, en un error de tiempo de compilación de la máquina virtual no puede encontrar la definición de la macro, pero en los servidores de la compañía compilar correctamente. Buscar termios.h sigue :( servidores de la empresa y las máquinas virtuales resultados similares)

El análisis de las referencias del programa se /usr/include/termios.h, abra el archivo que se encuentra en el archivo contiene los bits / termios.h, es decir /usr/include/x86_64-linux-gnu/bits/termios.h, en este documento hay definiciones de macro y similares, tales como B9600. contenidos de la máquina virtual dentro de documentos, también, por qué el error del compilador que? El primer punto sospechoso dentro de la máquina virtual que no contiene /usr/include/termios.h, "qztest" Este programa determina el contenido de impresión no contiene este archivo de cabecera añadiendo # error en el archivo de cabecera. Termios.h se incluyen en otros directorios? Búsqueda por gcc aspecto poco probable ruta (ruta de búsqueda ver mi artículo https://blog.csdn.net/wuzhidefeng/article/details/76854655 ), pero no se preocupe, en otros directorios también añaden un error # "qztest" no ha encontrado una macro tal que contiene estas cabeceras. Pero cuando compilador gcc no es capaz de encontrar el archivo de cabecera que las referencias de un programa al final es donde el primer documento que?

comando útil vino, g ++ -M comando. Por g ++ -M Termios.cpp -I -I ../inc/ ../../globalinclude/ -std = c ++ 11 | grep termi compilan por separado sobre este CPP a verlo en el uso final a la que los archivos de cabecera, los resultados como sigue:

Los resultados muestran que encontró ../inc/termios.h, pero sólo en este directorio termios.h, este documento no hace termios.h ah. Encontrará en el directorio y los archivos no se encuentran, es que las CGC no entre mayúsculas y minúsculas? ah no razonable. Trate de copia termios.h en un Termios1.h, y luego incluido en el Termios.cpp en Termios1.h, reutilización g ++ -M todavía se encuentran ../inc/termios.h. El termios.h a llamarse, recompilación, antes de añadir el # error "qztest" impreso. Termios.h termios.h parece ser lo más autónomo.

Entonces no montar dicho sea de paso, simplemente copiar toda la máquina virtual dentro del código recompilar, no hay error, compilar correctamente.

Conclusión: bajo el código de acceso de Windows en Ubuntu montaje, tiempo de compilación gcc puede ser engañosa, entre mayúsculas y minúsculas (para ser específicos razones profundamente arraigados detrás de la libre y luego llegar al fondo)

Lección: 1, nomenclatura de archivos para regular, no participar en tales como nombre de archivo, sólo en caso de que la misma cosa, no los archivos de sistema y nombres duplicados

           2, trata de no tener acceso a archivos multiplataforma directamente, puede copiarlo y luego el acceso

Publicado 12 artículos originales · ganado elogios 4 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/wuzhidefeng/article/details/105298654
Recomendado
Clasificación